[sql] bedingungen in query

Kampfwurst

Fleischersatz
ID: 87633
L
21 April 2006
911
146
Hallöchen, alle zusammen,
ich programmier mir grad ein kleines werbemanagementsystem für meine Seite... Die Ausgabe der Werbung möchte ich zufällig machen, allerdings möchte ich überprüfen, ob die kampagnen der Sponsoren nicht schon möglicherweise
a) zeitlich abgelaufen sind (wenn zeitl. gebucht) oder
b) keine Klicks mehr übrig haben (wenn n klicks gebucht wurden) oder
c) keine views mehr haben (...wenn die n gebuchten views schon alle wech sind)

hab in der entsprechenden Tabelle viewcount, clickcount, anz_view, anz_click, start und stop sowie das Feld methode, das bestimmt, ob die Kampagne durch klicks, views oder eine Zeit begrenzt ist... wie überprüfe ich jetzt in EINER query, ob eine kampagne noch "Guthaben" (also Zeit, klicks oder views, je nach Art) hat..?

Code:
SELECT id,url,img 
FROM x_werbung 
WHERE (viewcount<anz_view IF methode=view) 
AND (clickcount<anz_click IF methode=click) 
AND (stop>NOW() AND start<NOW() IF methode=zeit) 
ORDER BY rand() 
LIMIT 1
...also das hab ich jetzt einfach so geschrieben, obwohl ich mir relativ sicher bin, dass es syntaktisch der größte Humbuck ist... Wie sähe es richtig aus? Wie mache ich solche "Unterbedingungen"?

Danke im Vorraus!
 
Zuletzt bearbeitet:
1. die IF's durch AND's ersetzen
2. wenn die Abfrage über mehrere Tabellen geht musst du JOINS benutzen
 
Unterbedingungen sind's doch gar nicht. Eher Teile der Hauptbedigung. Also:
Code:
...
WHERE (methode='view' AND viewcount<anz_view)
  OR (methode='click' AND clickcount<anz_click)
  OR ...
Sollte zum Verdeutlichen ja reichen.
 
grad nochmal eine Frage:

wenn nich am Ende nen LIMIT 2 mache, dann wird trotzdem nur eins ausgegeben, solange nur 1 Datensatz vorhanden ist, oder?

Danke