Daniel: MySQL-Abfrage

Hallo,

ich habe eine Frage.

Die Abfrage "SELECT * FROM datenbank WHERE sid LIKE 'swb' AND sfid LIKE 'Datum' AND content > '978325260' AND content < '1009861140' ORDER BY content ASC" liefert den Wert Null.

Aber, in der Datenbank habe ich manuell gesucht und viele Einträge gefunden, auf die diese Eigenschaften zu treffen.

"SELECT * FROM datenbank WHERE sid LIKE 'swb' ORDER BY content ASC"
geht

"SELECT * FROM datenbank WHERE sfid LIKE 'Datum' ORDER BY content ASC"
geht

"SELECT * FROM datenbank WHERE content > '978325260' ORDER BY content ASC"
geht

"SELECT * FROM datenbank WHERE content < '1009861140' ORDER BY content ASC"
geht (sind auch viele Werte enthalten, die größer als 978325260 sind)

Aber warum kann ich die Abfrage nicht zusammen machen ?

Gruß, Daniel

  1. Hallo!

    Die Abfrage "SELECT * FROM datenbank WHERE sid LIKE 'swb' AND sfid LIKE 'Datum' AND content > '978325260' AND content < '1009861140' ORDER BY content ASC" liefert den Wert Null.

    Das sieht nach einem "UND-ODER"-Verständniss Problem aus. Sicherlich meinst Du:

    "SELECT * FROM datenbank WHERE (sid LIKE 'swb' OR sfid LIKE 'Datum') AND (content > '978325260' AND content < '1009861140') ORDER BY content ASC"

    Aber, in der Datenbank habe ich manuell gesucht und viele Einträge gefunden, auf die diese Eigenschaften zu treffen.

    Versuche ggf. Deine gewünschten Eigenschaften mal "umgangssprachlich" auszudrücken.

    Gruß
    Andreas

    1. Hallo!

      "SELECT * FROM datenbank WHERE (sid LIKE 'swb' OR sfid LIKE 'Datum') AND (content > '978325260' AND content < '1009861140') ORDER BY content ASC"

      Geht auch nicht, obwohl ich da bei sid und sfid (ist ein Unterschied) kein OR sondern ein AND gebrauche.

      Versuche ggf. Deine gewünschten Eigenschaften mal "umgangssprachlich" auszudrücken.

      Okay, suche alle Einträge aus der Datenbank, wo das Feld SID gleich SWB ist, das Feld sfid gleich DATUM und das Feld CONTENT einen Wert zwischen 978325260 und 1009861140 hat.

      Liebe Grüße, Daniel

      1. Auch hallo,

        Okay, suche alle Einträge aus der Datenbank,

        SELECT * FROM datenbank

        wo

        WHERE

        das Feld SID gleich SWB ist,

        sid = 'swb'
        (LIKE heißt 'wie' und = eben 'ist gleich')

        (und) das Feld sfid gleich DATUM

        AND sfid = 'Datum'

        und das Feld CONTENT einen Wert zwischen 978325260 und 1009861140 hat.

        AND content > 978325260
        AND content < 1009861140

        sollte eigentlich funktionieren. (Ich hoffe, Du kannst 'zwischen den Zeilen' lesen;-)
        (Das ORDER BY habe ich jetzt weggelassen, da es ja nicht wirklich relevant ist.)

        Allerdings heißt das noch lange nicht, daß es Datensätze gibt, die alle Kriterien erfüllen.
        Jede zusätzliche Einschränkung (WHERE-Klausel) bedeutet ja, daß voraussichtlich immer weniger Datensätze diese Bedingung auch erfüllt.
        Der 'Test' von Dir im Ausgangsposting mit den Einzelabfragen ist so nicht richtig. Oder gibt es Datensätze, welche in allen vier Einzelabfragen zurückgegeben werden?

        Grüße
          Klaus