Abfrage mit AND / OR

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Abfrage mit AND / OR

    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
    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;
    vorheriges Statement
    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
    mit der Abfrage bekomme ich immerhin keine 220 Ergebnisse mehr sondern nur noch 95 (19 User (4 unlimit), 55 Times)
    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')
    Zuletzt geändert von UzumakiNaruto; 10.04.2013, 13:41. Grund: nur bis zur stirn gedacht >.<
    Gruß
    Uzu

    private Homepage
Lädt...
X