| | | | |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Neuer Benutzer Registriert seit: 26.06.2011
Beiträge: 6
PHP-Kenntnisse: Anfänger ![]() | Die Spalte date ist vom Typ Date und hat keine Stunden, Minuten, Sekunden,... Angaben. Nur Jahr, Monat und Tag. Es kann also mehrere Einträge geben die am gleichen Tag sind und somit also nicht unique. Ich hab mich da wohl falsch ausgedrückt... Damit es eindeutig wird soll, wenn date am gleichen Tag ist, immer der jüngste Eintrag von created genommen werden. |
| | |
| | |
| Erfahrener Benutzer | hmm ungetestet, aber.. a) sub-selection Code: SELECT
id, requestID, employeeID, clientID, statusID,
location, date, timeFrom, timeTo, remarks,
description, created, edited, editorID
FROM assignments
WHERE date < CAST('2011-06-30' AS DATE)
AND employeeID = 52
AND created = (
SELECT MAX(created) FROM assignments
WHERE date < CAST('2011-06-30' AS DATE)
AND employeeID = 52
)
GROUP BY date
Code: SELECT
id, requestID, employeeID, clientID, statusID,
location, date, timeFrom, timeTo, remarks,
description, created, edited, editorID
FROM assignments
WHERE date < CAST( '2011-06-30' AS DATE )
AND employeeID = 52
GROUP BY date
HAVING created = (
SELECT MAX(created) FROM assignments
WHERE date < CAST('2011-06-30' AS DATE)
AND employeeID = 52
)
__________________ Geändert von tr0y (27.06.2011 um 02:08 Uhr). |
| | |
| | |
| Neuer Benutzer Registriert seit: 26.06.2011
Beiträge: 6
PHP-Kenntnisse: Anfänger ![]() | Hallo trOy Danke für die Antwort. Code: SELECT
id, requestID, employeeID, clientID, statusID,
location, date, timeFrom, timeTo, remarks,
description, created, edited, editorID
FROM assignments
WHERE date < CAST('2011-06-30' AS DATE)
AND employeeID = 52
AND created = (
SELECT MAX(created) FROM assignments
WHERE date < CAST('2011-06-30' AS DATE)
AND employeeID = 52
)
GROUP BY date
ID ..... date .... created 3000 2011-06-29 2011-06-26 19:23:15 3001 2011-06-29 2011-06-25 19:48:08 3002 2011-06-29 2011-06-26 10:48:08 3003 2011-06-28 2011-06-20 19:48:08 3004 2011-06-27 2011-06-20 13:48:08 3005 2011-06-28 2011-06-24 19:48:08 soll liefern: 3000, ... 3005, ... 3004, ... Es müssten also mehrere Zeilen als Ergebnis kommen, wenn es in date unterschiedliche Daten gibt was eigentlich immer der Fall ist. Ich hoffe du oder jemand anders kann mir nochmal weiterhelfen damit. Die Gesamtergebnismenge soll auch auf 3 beschränkt sein aber das müsste ja mit limit 3 einfach zu machen sein. Ich bedanke mich schonmal. Beste Grüße, Changkowski |
| | |
| | |
| Erfahrener Benutzer | hmm stimmt, ich selektiere im sub-query murks, entschuldige. Code: SELECT
id, requestID, employeeID, clientID, statusID,
location, date, timeFrom, timeTo, remarks,
description, created, edited, editorID
FROM assignments AS outer
WHERE outer.date < CAST('2011-06-30' AS DATE)
AND outer.employeeID = 52
AND outer.created = (
SELECT MAX(created) FROM assignments AS inner
WHERE inner.date = outer.date
AND inner.employeeID = outer.employeeID
)
GROUP BY outer.date
Code: SELEKTIERE {felder...}
VON TABELLE assignments ALS ALIAS outer WO WERTZUSTAND:
employeeID IST GLEICH 52
created IST GLEICH (
UNTER-SELEKTIERUNG MAXIMUM VON FELD(created)
VON TABELLE assignments ALS ALIAS inner WO WERTZUSTAND:
ALIAS inner FELD date IST GLEICH ALIAS outer FELD date
ALIAS inner FELD employeeID IST GLEICH ALIAS outer FELD employeeID
)
GRUPPIERE WERTE IN ALIAS outer FELD date
Vorab schonmal eine Warnung, du begegnest in MySQL 2erlei "Aliase", die für Felder und die für Datenbanken, erstere können nicht in der WHERE-Clause verwendet werden, da erst die WHERE-Clause und dann das eigentliche SELECT ausgeführt wird, zweitere allerdings schon, da vor dem WHERE die Datenbank "entschieden" wird. Bei Subselects gibts bei größeren Tabellen und je nach Komplexität des oder der ( multiplen ) Subqueries performance verluste. Bei größeren Sachen sollte man JOINs verwenden, statt Sub-SELECTs.
__________________ |
| | |
| | |
| Neuer Benutzer Registriert seit: 26.06.2011
Beiträge: 6
PHP-Kenntnisse: Anfänger ![]() | Hi tr0y Sorry für die verspätete Antwort. Ich bekomme leider eine Fehlermeldung wenn ich das ausführe und kann gerade den Fehler nicht finden. Code: SQL Error (1604): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'outer WHERE outer.date < CAST('2011-06-30' AS DATE) AND outer.employeeID = ' at line 5
Code: select id, date, created from assignments where (date, created) in (select date, max(created) from assignments group by date); Danke nochmal für die Antwort. |
| | |
| | ||
| Moderator¹ Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
__________________ RGB is totally confusing - I mean, at least #C0FFEE should be brown, right? | |
| | |
| | |
| Erfahrener Benutzer | Code: SELECT
id, requestID, employeeID, clientID, statusID,
location, date, timeFrom, timeTo, remarks,
description, created, edited, editorID
FROM assignments AS universe
WHERE universe.date < CAST('2011-06-30' AS DATE)
AND universe.employeeID = 52
AND universe.created = (
SELECT MAX(created) FROM assignments AS earth
WHERE earth.date = universe.date
AND earth.employeeID = universe.employeeID
)
GROUP BY universe.date
__________________ |
| | |
| | |
| Neuer Benutzer Registriert seit: 26.06.2011
Beiträge: 6
PHP-Kenntnisse: Anfänger ![]() | Hallo nochmal und Danke für die Hilfe. Beide Abfragen funktionieren jetzt, aber jetzt habe ich das Problem das beide Abfragen auch sehr langsam sind. Ich habe bislang noch nicht besonders viel mit Subqueries gearbeitet, aber ich hätte nicht gedacht, dass Wartezeiten von 10 Minuten dadurch entstehen. Gibt es eine Möglichkeit das ganze zu beschleunigen? |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Sql Befehl über zwei verschiedene Datenbanken | darkman | Datenbanken | 8 | 10.05.2011 10:29 |
| [Erledigt] SQL Abfrage escapen | wooha | PHP Einsteiger | 3 | 18.04.2011 10:13 |
| SQL Abfrage über PHP | cURE | Datenbanken | 3 | 09.02.2011 12:55 |
| [Erledigt] Grundsatzfrage über Tabellenstruktur und SQL Statement | Bravestar2010 | Datenbanken | 2 | 04.02.2011 11:49 |
| Array aus SQL Abfrage zusammenbauen um es rekursiv abzuarbeiten | litterauspirna | PHP Einsteiger | 7 | 01.02.2011 18:44 |
| mySQL abfrage über mehrere Tabellen | crustyroyal | PHP Tipps 2010 | 3 | 23.04.2010 14:20 |
| Abfrage über 2 Tabellen | ragtek | PHP Tipps 2010 | 4 | 14.04.2010 19:43 |
| [Erledigt] Select Abfrage über 2 Tabellen bringt keine Ausgabe | clamber | Datenbanken | 4 | 03.03.2010 15:25 |
| [Erledigt] Abfrage mit date_add über PHP-Script liefert Fehler | stende | Datenbanken | 7 | 17.08.2009 13:44 |
| Scriptsuche [Erledigt] SQL- Abfrage über 2 tabellen | ejim | Scriptbörse | 1 | 17.07.2009 21:10 |
| Wiemache ich eine Abfrage über 3 Tabellen??? | djscaleo | Datenbanken | 8 | 05.01.2009 10:46 |
| Abfrage über mehrer Tabellen mit Berechnung | richyboy | Datenbanken | 1 | 04.11.2008 12:00 |
| Abfrage aller Tabellen über Schleife | PHP Tipps 2005-2 | 7 | 22.10.2005 12:16 | |
| [Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert | Datenbanken | 2 | 08.09.2005 11:59 | |
| Abfrage über 3 Tabellen | PHP Tipps 2004 | 3 | 31.07.2004 22:34 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| sql 2 datum gleich, sql die selben spalten aus 2 tabelen abfragen, sql abfrage mit zwei spalten, query bestimmtes datum abfragen, sql zwei datum to date, sql datenbank spalte datum sekunden, sql prüfung gleicher eintrag zwei spalten, sql not exists gleiche tabelle, sql abfrage zwei timestamps, sql mehrere spalten, sql 2 zellen abfrage, falls zwei spalten gleich sql, select zwei felder in einer abfrage, sql abfrage aus mehreren spalten, sql select alle vor bestimmten datum, sql abfrage aus 2 spalten erstellen, sql wenn datumsfeld gleich wochentag dann, sql abfrage zwischen 2 zeiten, sql abfrage zu zwei zeiten, mysql datum aus sekunden, minuten stunden zusammen bauen |