Komplizierte select abfrage
Sebastian
- datenbank
Hallo erat mal,
ich hoffe hier kann mir jemand weiter helfen.
Ich hab in meiner DB (mySQL) eine Tabelle, in der ereignisse abgespeichert sind. also z.B.:
datum ereignis
31.12.2003 Silvesterparty bei Uwe
02.01.2004 Geburstag Papa
jetzt möchte ich eine select-Abfrage machen, die sowohl die Ereignisse ausgibt aber auch die Tage an denen halt nichts ist.
z.B.:
...
31.12.2003 Silvesterparty
01.01.2004
02.01.2004 Geburtstag Papa
03.01.2004
...
Die Datumsangaben abzuspeichen an denen nichts ist kann doch wohl keine Lösung sein.
Ist das überhaupt möglich???
Danke für jede Antwort
Sebastian
Sup!
Du willst also aus der Datenbank Dinge bekommen, die gar nicht drin sind?
Gruesse,
Bio
Servus,
wo ist das Problem?
Select Datum, EREIGNIS from Tabelle.
Je nachdem ob du nun selektieen möchtest, ob was los ist oder nicht hilft eventuell noch folgendes.
Select Datum, EREIGNIS from Tabelle where EREIGNISE not NULL
Sollte dir alle Einträge liefern, wo das Ereignis nicht leer ist.
Spalten mit keinem Wert zu versehen ist durchaus möglich, sofern es nicht explizit der Spalte untersagt wird.
das gibt man wiederum beim erstellen der Tabelle an.
Gruss Matze
yo,
jetzt möchte ich eine select-Abfrage machen, die sowohl die Ereignisse ausgibt aber auch die Tage an denen halt nichts ist.
SELECT datum, ereignis FROM tabellename ORDER BY datum;
Ilja
SELECT datum, ereignis FROM tabellename ORDER BY datum;
err falsche antwort. habe nicht genau gesehen, dass nicht jedes datum in der tabelle eingetragen ist. ;-)
aber das was du vor hast, ist ein left join, wobei du die zweite tabelle noch erstellen mußt, physikalisch oder aber temporär.
Ilja
hi,
Die Datumsangaben abzuspeichen an denen nichts ist kann doch wohl keine Lösung sein.
gut erkannt. aber von der DB daten erfragen zu wollen, die diese gar nicht bereithält, ist ebenso unsinnig.
mache deine abfrage so, dass sie dir alle daten, an denen ein ereignis stattfindet, zurückliefert.
mache anschliessend in deinem script (php, perl, ...) eine schleife, die den gesammten in frage stehenden zeitraum durchläuft, und wenn ein zum datum passender datensatz im abfrage-ergebnis vorliegt, diesen ausgibt, andernfalls nur das datum und "heute nix los!" ausgibt.
pseudocode:
hole ersten datensatz aus abfrageergebnis.
schleife über zeitraum
{
if (zeitraum-zähler == datum-aus-aktuellem-datensatz)
{
gebe datensatz aus
hole nächsten datensatz aus abfrageergebnis
}
else
{
gebe zeitraum-zähler und "heute nix los" aus
}
erhöhe zeitraum-zähler (je nach schleifen-typ, bei for nicht erforderlich)
}
ist nur schnell hingetippt, evtl. noch verbesserungswürdig/-bedürftig.
gruss,
wahsaga