Mailinglisten-Archive |
Jens Vonderheide wrote:
> Hallo,
>
> ich habe eine Tabelle mit einer ID, die für mehrere Einträge gleich ist
> sowie einem Start- und Endedatum, etwa so:
>
> CREATE TABLE spans (
> id_common int unsigned not null,
> start date not null,
> end date not null
> )
>
> Jetzt suche ich für alle existierenden Werte von id_common die Intervalle,
> für die es keinen Eintrag gibt.
> An dieser Query verzweifel ich jetzt schon einige Tage, hat jemand eine
> Idee?
>
> Danke,
> Jens
Hallo Jens,
ich würde eine Lösung mittels eines Arrays vorschlagen:
select * from spans;
for (jede id_common)
{
$zeiger = $start;
while ($zeiger!=$end)
{
$array[$zeiger] = true; *)
setze_zeiger_weiter;
};
};
[ *) Hier vielleicht sogar die id_common's speichern, damit
Du bei Bedarf auch gucken kannst, in welchen id's ein bestimmtes
Datum vorkommt. ]
Danach kannst Du gucken, welche Daten des Arrays nicht true sind (bzw.
keinen Eintrag haben) ... da hast Du Deine Daten, die nirgendwo
vorkommen. Aufeinanderfolgende leere Array-Einträge kann man dann
bestimmt auch noch irgendwie Intervallweise ausgeben.
Gruß,
Torsten
php::bar PHP Wiki - Listenarchive