Hallo,
ich habe ein kleines Problem, bei dem ich mal die Hilfe von Profis benötige. Möglicherweise ist, was ich vorhabe auch gar nicht möglich.
Ich stelle über ein PHP-Skript eine MySQL-Anfrage, in der ein INNER JOIN vorkommt.
Dieser INNER JOIN soll aber nur ausgeführt werden, wenn er auch möglich ist, d.h. wenn in der ON-Clause genannten Felder auch gefüllt sind.
Vielleicht erstmal den Code, dann ist einfacher ?!
die Tabelle stat_aktion ist eine Statistik-Tabelle. Es kann vorkommen, daß für die Spalte sa.date am 2006-08-30 noch gar kein Eintrag vorgenommen, in diesem Falle wird bei dem jetzigen Skript kein Ergebnis ausgegeben.
Was möchte ich erreichen?
dieser Join
soll nur teil der Abfrage sein, wenn es auch einen eintrag in der Tabelle stat_aktion am 2006-08-30 mit der entsprechenden a.aktionID gibt.
Gibt es diesen Eintrag nicht soll dieser Join nicht bestandteil der Abfrage sein.
Eine zusätzliche Abfrage im Vorfeld ist hier aufgrund der komplexität nicht möglich.
Ich bin über jeden Tipp sehr dankbar
Atze
ich habe ein kleines Problem, bei dem ich mal die Hilfe von Profis benötige. Möglicherweise ist, was ich vorhabe auch gar nicht möglich.
Ich stelle über ein PHP-Skript eine MySQL-Anfrage, in der ein INNER JOIN vorkommt.
Dieser INNER JOIN soll aber nur ausgeführt werden, wenn er auch möglich ist, d.h. wenn in der ON-Clause genannten Felder auch gefüllt sind.
Vielleicht erstmal den Code, dann ist einfacher ?!
PHP-Code:
SELECT a.aktionID,a.kundenID,a.max_klick,a.max_view, a.eigen
FROM aktion a
INNER JOIN kunden_konto k ON a.kundenID=k.kundenID
AND (k.klick>='1' or a.eigen='1')
AND (k.view>='1' or a.eigen='1')
INNER JOIN stat_aktion sa ON a.aktionID=sa.aktionID
AND (sa.klick < a.max_klick or a.max_klick='-1')
AND (sa.view < a.max_view or a.max_view='-1')
AND sa.date='2006-08-30'
AND a.aktiv='1'
ORDER BY rand()
LIMIT 0,1
Was möchte ich erreichen?
dieser Join
PHP-Code:
INNER JOIN stat_aktion sa ON a.aktionID=sa.aktionID
AND (sa.klick < a.max_klick or a.max_klick='-1')
AND (sa.view < a.max_view or a.max_view='-1')
AND sa.date='2006-08-30'
Gibt es diesen Eintrag nicht soll dieser Join nicht bestandteil der Abfrage sein.
Eine zusätzliche Abfrage im Vorfeld ist hier aufgrund der komplexität nicht möglich.
Ich bin über jeden Tipp sehr dankbar
Atze
Kommentar