Abfrage auf nicht existente Daten

Golem

Neuer Benutzer
Beiträge
4
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"
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
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.
 

Golem

Neuer Benutzer
Beiträge
4
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.
 

ukulele

Datenbank-Guru
Beiträge
4.394
Führt es denn überhaupt zu einem Ergebniss und wenn ja, was ist falsch daran? Müsste eigentlich gehen wenn ich nichts überlesen habe.
 

Golem

Neuer Benutzer
Beiträge
4
"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")' "
 

ukulele

Datenbank-Guru
Beiträge
4.394
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^^
 
Werbung:

Golem

Neuer Benutzer
Beiträge
4
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?
 
Oben