Wer kann helfen?
Ich habe 3 Tabellen. In Tabelle A sind Adressen mit der Spalte 'namen'. In Tabelle B sind Gegenstände mit einer Nummer und einer Adresse aus A. In Tabelle C sind Nutzungszeiten der Gegenstände mit von, bis und einer Nummer aus B.
Tabelle A: 'name'
Tabelle B: 'nummer', 'name'(aus A)
Tabelle C: 'von', 'bis', 'nummer'(aus B)
Eigentlich ganz einfach. Aber nun:
Ich will nicht die Zeiten filten zwischen 'von' und 'bis' sondern die Zeit, ausgehend von einem bestimmten Datum (z.Bsp. heute) vom letzten Rücklauf (max(bis) <= heute, aus C) und der nächsten Vergabe (min(von >= heute, aus C). Dazu möchte ich über Tabelle B den 'name' aus Tabelle A und die Tage zw. Rücklauf und neuer Vergabe.
Was ich nicht haben möchte ist
* einen max(bis) von 'xyz' z.Bsp. vorgestern
* einen min(von) ebenfalls von 'xyz' z.Bsp. übermorgen
* aber von gestern bis morgen ist 'xyz' vergeben
Woran ich immer wieder scheitere, sind die drei *
Gruß coastbike
Ich habe 3 Tabellen. In Tabelle A sind Adressen mit der Spalte 'namen'. In Tabelle B sind Gegenstände mit einer Nummer und einer Adresse aus A. In Tabelle C sind Nutzungszeiten der Gegenstände mit von, bis und einer Nummer aus B.
Tabelle A: 'name'
Tabelle B: 'nummer', 'name'(aus A)
Tabelle C: 'von', 'bis', 'nummer'(aus B)
Eigentlich ganz einfach. Aber nun:
Ich will nicht die Zeiten filten zwischen 'von' und 'bis' sondern die Zeit, ausgehend von einem bestimmten Datum (z.Bsp. heute) vom letzten Rücklauf (max(bis) <= heute, aus C) und der nächsten Vergabe (min(von >= heute, aus C). Dazu möchte ich über Tabelle B den 'name' aus Tabelle A und die Tage zw. Rücklauf und neuer Vergabe.
Was ich nicht haben möchte ist
* einen max(bis) von 'xyz' z.Bsp. vorgestern
* einen min(von) ebenfalls von 'xyz' z.Bsp. übermorgen
* aber von gestern bis morgen ist 'xyz' vergeben
Woran ich immer wieder scheitere, sind die drei *
PHP Code:
SELECT `tab_a1`.`vname`,`tab_a1`.`name`,`tab_c1`.`nr`, max(`tab_c1`.`bis`) `bis`, min(`tab_c2`.`von`) `von`
FROM `tab_c` `tab_c1`
LEFT JOIN `tab_c` `tab_c2`
ON `tab_c2`.`nr` = `tab_c2`.`nr`
LEFT JOIN `tab_b` `tab_b1`
ON `tab_b1`.`nr` = `tab_c2`.`nr`
LEFT JOIN `tab_a` `tab_a1`
ON `tab_a1`.`name` = `tab_b1`.`name`
WHERE `tab_c1`.`bis` <= '2009-06-03' and `tab_c2`.`von` >= '2009-06-03'
GROUP BY `tab_c1`.`nr`
ORDER BY `tab_c1`.`nr` LIMIT 100
Comment