[MySQL] Problem bei Anfrage über 2 Tabellen

dabu

Well-known member
ID: 11566
L
20 April 2006
7.229
407
Ich habe gerade ein Problem, wo ich nicht mehr weiter komme. Die Lösung ist bestimmt einfach, aber um die Uhrzeit ist das dann doch etwas schwerer *g*. Also zu meinem Problem:

Ich habe eine Anfrage über 2 Tabellen:
PHP:
SELECT t1.*, t2.* FROM table1 AS t1 LEFT JOIN table2 AS t2 ON t1.irgendwas = t2.nochwas WHERE t1.undnochwas > 0

Im Moment werden mir ja alle Datensätze aus table1 angezeigt, bei denen undnochwas > 0 ist. So weit passt es. Allerdings will ich jetzt zusätzlich noch etwas in table2 überprüfen. Und zwar soll dort eine Prüfung t2.bla > $zahl rein.

Wenn ich das allerdings mit AND t2.bla > $zahl einbaue, dann zeigt es mir ja nur die Datensätze an, wo diese Bedingung t2.bla > $zahl korrekt ist. Allerdings hätte ich auch gerne zusätzlich alle Datensätze angezeigt, wo es keinen Eintrag in t2 gibt.

Das heißt ich will nur die Datensätze nicht haben, wo diese t2.bla > $zahl nicht erfüllt ist. Unabhängig davon, ob es überhaupt ein t2 gibt oder nicht.

Ich hoffe ich konnte das verständlich erklären :). Irgendwie gehe ich an das Problem falsch ran denke ich :-? .
 
du musst die bedigung mit der zweiten tabelle in die on klausel schreiben...

Code:
ON (t1.irgendwas = t2.nochwas AND t2.keineahung > 10) WHERE t1.undnochwas > 0
 
Irgendwie komme ich mit der Lösung nicht weiter, ich bin wohl zu dumm :(.

Es geht um einen Klickbereich, den ich erstellen will. Die Anfrage habe ich mir jetzt erstellt mit den zusätzlichen Dingen im Join-Teil:
PHP:
mysql_query("SELECT t1.*, t2.* FROM paidbanner AS t1 LEFT JOIN paidbanner_user AS t2 ON (t1.id = t2.pbid AND t2.reloadsperre < $zeit AND t2.userid = $user) WHERE t1.klicks > 0 AND t1.status= 1 ORDER BY t1.klicks DESC LIMIT 10");

Angezeigt werden sollen natürlich nur die Banner, wo die Reloadsperre abgelaufen ist oder es keine Reloadsperre gibt (natürlich nur für den jeweiligen User).

Aber so wie ich meine Abfrage im Moment habe klappt das nicht :-? .
 
Hat sich erledigt, hab da jetzt eine Lösung für gefunden. Hab das jetzt mit LEFT OUTER JOIN gemacht.