1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Abfrage auf nicht existente Daten

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Golem, 19 Oktober 2011.

  1. Golem

    Golem Neuer Benutzer

    Vorneweg: Ich habe nach einer Antwort auf meine Frage gesucht, aber nix gefunden. Sollte die Antwort sonnenklar und schon 1000 mal beantwortet worden sein, bitte ich um Entschuldigung. Ich erkläre mein Problem gleich anhand eines Beispiels.

    Tabelle: Adresse
    Spalten: Nr, Name, Ort

    Tabelle: Besuche
    Spalten: Nr, Datum, Text

    Verknüpfung im Join über Spalte "Nr" 1:n

    Nun möchte ich mit einem Select alle "Adressen", die in der Tabelle "Besuche" keine Einträge seit dem 01.01.2011 haben. Wie mache ich das?

    Ich habe da mal etwas in der Art versucht, aber das hat nicht zum gewünschten Ergebnis geführt:
    SELECT * FROM Adresse LEFT JOIN Besuche ON (Adresse.Nr = Besuche.Nr) WHERE max(Besuche.Datum) < "2011-01-01"
     
  2. ukulele

    ukulele Datenbank-Guru

    Du darfst schonmal nie außer Acht lassen, das eventuell auch Adressen existieren die gar keine Besuche haben. In sofern weiß ich nicht, ob ein JOIN überhaupt geht. Des weiteren weiß ich nicht, ob dein Datumsformat passt. Ist das Datum ein Text, kannst du nicht mit < arbeiten.
    Code:
    SELECT    *
    FROM    Adresse
    WHERE    Nr NOT IN (    SELECT    Nr
                        FROM    Besuche
                        WHERE    Datum > '2011-01-01 00.00.00:000' )
    könnte funktionieren.
     
  3. Golem

    Golem Neuer Benutzer

    Vielen Dank für deine Antwort. Es ist sichergestellt, dass jede Adresse über Besuche verfügt (das heisst, die anderen werden anders aussortiert). Das Datum ist nicht im Text-, sondern im Datumsformat gespeichert.

    Ich habe deinen SELECT versucht, aber dies führt nicht zum gewünschten Ergebnis.
     
  4. ukulele

    ukulele Datenbank-Guru

    Führt es denn überhaupt zu einem Ergebniss und wenn ja, was ist falsch daran? Müsste eigentlich gehen wenn ich nichts überlesen habe.
     
  5. Golem

    Golem Neuer Benutzer

    "You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT Nr FROM Besuche WHERE Datum > "2011-01-01 00.00.00:000")' "
     
  6. ukulele

    ukulele Datenbank-Guru

    Ich nehme an
    Code:
    SELECT    *
    FROM    Adresse
    WHERE    Nr NOT IN (    SELECT    Nr
                        FROM    Besuche
                        WHERE    Datum > "2011-01-01" )
    hast du auch probiert? Ich liebe MySQL Fehlermeldungen^^
     
  7. Golem

    Golem Neuer Benutzer

    Ja, habe ich natürlich auch probiert. :)

    Ich habe diesen SELECT sogar ohne eine WHERE-Klausel probiert, erhielt aber dieselbe Meldung. Was stimmt da nicht?
     
Die Seite wird geladen...

Diese Seite empfehlen