könnt ihr ignoreiren (close)
ich werde es in 2 abfragen machen müssen, da "unlimit" leute ja nicht in der times tabelle stehen und somit es mir eh die ganze abfrage zerreißt ohne subquery.
Hey Leute,
irgendwie steh ich auf dem Schlauch.
Egal wie ich die Klammern setze um die AND/OR zu verknüpfen ich komme nicht das gewünschte Ergebnis.
time_start und time_stop gucken immer nach der aktuellen ZEIT (also jetzt)
Danke schonmal für Hilfe und Anregung die zur Lösung verhelfen.
Lösung
vorheriges Statement
mit der Abfrage bekomme ich immerhin keine 220 Ergebnisse mehr sondern nur noch 95 (19 User (4 unlimit), 55 Times)
ich werde es in 2 abfragen machen müssen, da "unlimit" leute ja nicht in der times tabelle stehen und somit es mir eh die ganze abfrage zerreißt ohne subquery.
Hey Leute,
irgendwie steh ich auf dem Schlauch.
Egal wie ich die Klammern setze um die AND/OR zu verknüpfen ich komme nicht das gewünschte Ergebnis.
time_start und time_stop gucken immer nach der aktuellen ZEIT (also jetzt)
Danke schonmal für Hilfe und Anregung die zur Lösung verhelfen.
Lösung
Code:
SELECT u.*, t.* FROM users u, times t WHERE t.user_id = u.user_id AND u.user_name = 'uzumakinaruto' AND u.user_active = 1 AND t.time_start <= '2013-04-10 14:37:59' AND t.time_stop >= '2013-04-10 14:37:59' AND u.isUnlimit = 0 UNION SELECT *, '', '', '', '', '' -- leere felder für die 'times' tabelle damit UNION funktioniert FROM users WHERE isUnlimit = 1 AND user_name = 'uzumakinaruto' AND user_active = 1;
Code:
SELECT u.*, t.* FROM users u, times t WHERE t.user_id = u.user_id AND u.user_name = 'uzumakinaruto' AND u.user_active = 1 -- DIES (hat er Zeit zur Verfügung) AND t.time_start <= '2013-04-10 13:30:59' AND t.time_stop >= '2013-04-10 13:30:59' -- ODER DIES (oder brauch er das gar nicht) OR u.isUnlimit = 1
Code:
SELECT u.*, t.* FROM users u, times t WHERE t.user_id = u.user_id AND u.user_name = 'uzumakinaruto' AND u.user_active = 1 AND u.isUnlimit = 1 OR ( t.time_start <= '2013-04-10 13:30:59' AND t.time_stop >= '2013-04-10 13:30:59')