Satz mit der kleinsten Uhrzeit
Kalle_B
- datenbank
Hallöle,
ich grüble darüber nach, ob ich folgendes Problem mit einem (statt mehreren) MySQL 5 - Kommando lösen kann.
Habe eine Tabelle mit Veranstaltungen:
id adr_id tag uhr text
-- ------ ---------- ----- ---------------
11 135 2009-12-21 07:00 Wanderung
27 135 2009-12-21 17:00 Vortrag
45 257 2010-01-05 10:00 Frühstück
...
Möchte nun pro Veranstalter (adr_id) den Satz inkl. Text mit dem kleinsten Tag/Uhr haben. Wie geht das?
SELECT
trm1.adr_id VIP
,min(CONCAT(trm1.tag,' ',trm1.uhr)) min_tag_uhr
...
GROUP BY adr_id
Mit GROUP habe ich wohl keine Chance, weitere Daten zum Satz mit der gefundenen min_tag_uhr zu greifen? Und die Satz-id bekomme ich auch nicht?
Also hole ich mir in einer while- Schleife die Sätze, die zu den gefundenen Ergebnissen gehören. Wenig elegant.
Lieben Gruß,
Kalle
Hi,
Möchte nun pro Veranstalter (adr_id) den Satz inkl. Text mit dem kleinsten Tag/Uhr haben. Wie geht das?
Korrelierte Unterabfrage.
MfG ChrisB
Hallo, Chris,
Korrelierte Unterabfrage.
Hat funktioniert mit kleinem Trick:
SELECT
...
WHERE (CONCAT(trm2.tag,' ',trm2.uhr,' ',trm2.id)) = ANY (
SELECT
min(CONCAT(trm1.tag,' ',trm1.uhr,' ',trm1.id)) min_tag_uhr
...
GROUP BY ...
)
Mit Trick meine ich, dass ich drei Felder mit concat zusammengefasst habe.
Könnte ich auch drei Felder einzeln abfragen mit _einem_ Sub- Select?
WHERE tag = ???
AND uhr = ???
AND id = ???
Gruß, Kalle
Hi,
Mit Trick meine ich, dass ich drei Felder mit concat zusammengefasst habe.
WTF?
Könnte ich auch drei Felder einzeln abfragen mit _einem_ Sub- Select?
WHERE tag = ???
AND uhr = ???
AND id = ???
Drück dich bitte etwas präziser aus.
Was genau willst du erreichen?
Zu Beispieldaten auch das gewünschte Ergebnis anzugeben, ist meist hilfreich.
MfG ChrisB
Hallo
SELECT
...
WHERE (CONCAT(trm2.tag,' ',trm2.uhr,' ',trm2.id)) = ANY (
SELECT
min(CONCAT(trm1.tag,' ',trm1.uhr,' ',trm1.id)) min_tag_uhr
...
GROUP BY ...
)Mit Trick meine ich, dass ich drei Felder mit concat zusammengefasst habe.
Warum trennst du überhaupt die Uhrzeit vom Datum?
Tschö, Auge
Warum trennst du überhaupt die Uhrzeit vom Datum?
Gute Frage. Die Idee war, dass ein Event an einem Tag stattfindet von uhr_von bis uhr_bis. Und nicht mehrere Tage im Stück.
Ein Event vom 31.12.2009 20:00 bis zum 15.01.2010 03:15 ohne Pause ist nicht realisiert, weil es nicht in meinen Erfahrungsschatz passt.
Du meinst, so etwas gibt es?
Okay, ein Hallenflohmarkt von 24 Stunden und ein Sechstagerennen nonstop ist mir auch schon untergekommen. Aber ist das die Regel?
Im Moment kann ich am Tag X kein Event darstellen, das von X -n bis X +m läuft. Bitte nenne mir Beispiele von Events, die 60 oder 120 Stunden laufen. Gibt es sowas?
Ich will ja die Realität abbilden.
Gruß, Kalle
Hi!
Die Idee war, dass ein Event an einem Tag stattfindet von uhr_von bis uhr_bis. Und nicht mehrere Tage im Stück.
Du meinst, so etwas gibt es?
Aber Hallo! Woodstock, Haldern, Olympia, Klimakonferenzen, Modellbau-Messen, Games Convention, um nur mal auf die Schnelle ein paar zu nennen.
Okay, ein Hallenflohmarkt von 24 Stunden und ein Sechstagerennen nonstop ist mir auch schon untergekommen. Aber ist das die Regel?
Egal. Du versuchst vielleicht ein paar mickrige Byte pro Datensatz zu sparen und das fällt dir nun auf die Füße.
Lo!
yo,
Aber Hallo! Woodstock, Haldern, Olympia, Klimakonferenzen, Modellbau-Messen, Games Convention, um nur mal auf die Schnelle ein paar zu nennen.
die CeBit würde mir noch spontan einfallen, nicht ganz unwichtig für uns ITler...
Gruß
Ilja
Hallo
Warum trennst du überhaupt die Uhrzeit vom Datum?
Gute Frage. Die Idee war, dass ein Event an einem Tag stattfindet von uhr_von bis uhr_bis. Und nicht mehrere Tage im Stück.
Ja, und? Deshalb ist 2009-12-21 17:18:00 abweging?
Okay, ein Hallenflohmarkt von 24 Stunden und ein Sechstagerennen nonstop ist mir auch schon untergekommen. Aber ist das die Regel?
Derlei Dinge wurden dir ja schon genannt. Davon abgesehen habe ich nur gefragt, warum die die Uhrzeit vom Datum trennst. *Die Frage* hast du standhaft nicht beantwortet. Dafür unterstellst du mir eine Frage, die ich nicht gestellt habe.
Tschö, Auge
Moin!
Habe eine Tabelle mit Veranstaltungen:
id adr_id tag uhr text
-- ------ ---------- ----- ---------------
Issnichsogut!
id adr_id datetime text
-- ------ -------- ----
Ich würde an Deiner Stelle die Tabelle umbauen als nachfolgend versuchen den bestehenden Fehler durch komplizierte also fehlerträchtige und inperformante Abfragen zu heilen.
http://dev.mysql.com/doc/refman/5.1/de/datetime.html
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix
Moin!
Hallöle,
ich grüble darüber nach, ob ich folgendes Problem mit einem (statt mehreren) MySQL 5 - Kommando lösen kann.
SELECT `adr_id`,
`id`,
`tag`,
`uhr`,
`text`
FROM `TABELLE`
GROUP BY `adr_id`
ORDER BY `tag`,`uhr`;
Liefert:
addr_id id tag uhr text
135 11 2009_12_21 07:00:00 Wanderung
257 45 2010_01_05 10:00:00 Frühstück
SELECT `adr_id`,
`id`,
`tag`,
`uhr`,
`text`
FROM `TABELLE`
WHERE `tag`=CURDATE()
GROUP BY `adr_id`
ORDER BY `tag`,`uhr`
Liefert heute, am 21.12.2009:
addr_id id tag uhr text
135 11 2009_12_21 07:00:00 Wanderung
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix