kleines verständnis prob mit mysql not exist

yester

Active member
ID: 42634
L
8 August 2008
27
0
hi ich versuche eine einfache abfrage in eine Zeile umzubauen so das der mysql server die arbeit bekommt

$werbung= db_query ("SELECT * from wnw_angebote wnwa,wnw_werbung wnww ,wnw_ipsicher wnwi WHERE wnwa.flaeche=".$kamp['lauf']." and wnwa.status='Ja' and wnww.status='aktiv' and wnww.guthaben>wnww.preis and (NOT EXISTS(wnwi.ip='".$adr."' and wnwi.flaeche=".$kamp['lauf']." and wnwi.werbung=wnww.lauf)) ORDER BY RAND()");

kann mir einer dabei auf die Sprünge helfen was ich da nun falsch habe ?
ohne die not exist abfrage geht es ja , aber dann muss ich reichlich abfragen machen , das wollte ich beschleunigen.

mit freundlichem gruße und schon mal dankeschön
 
Aber pass auf. Du hast in der WHERE-Klausel drei Tabellen drin, aber kein Join-Kriterium. Du bekommst also das karthesische Produkt der drei Tabellen. Vermutlich ist es nicht das, was Du willst.

Selbst wenn Du die wnw_ipsicher in die NOT EXISTS Klausel setzt ...
Code:
SELECT * from 
wnw_angebote wnwa,
wnw_werbung wnww 
WHERE 
wnwa.flaeche=".$kamp['lauf']." and 
wnwa.status='Ja' and 
wnww.status='aktiv' and 
wnww.guthaben>wnww.preis and 
NOT EXISTS (
SELECT  1 FROM wnw_ipsicher wnwi  
WHERE 
wnwi.ip='".$adr."' and 
wnwi.flaeche=".$kamp['lauf']." 
and wnwi.werbung=wnww.lauf )
ORDER BY RAND()


...hast Du immer noch die wnw_angebote und die wnw_werbung, bei denen das Join-Kriterium fehlt.

SELECT * ist übrigens bäh-bäh, aber das hast Du vermutlich nur zum Testen drin :)
 

Ähnliche Themen