Ok das (abgeschnittene Abfrage) läuft gut. Habe vor einem Monat einen Expertenrat bekommen, um es zu reparieren."Dreiergruppe"? Kann ein INNER-JOIN eine zusätzliche Abfrage nach 'WHERE' haben, um Zeilen aus einer dritten Tabelle auszuschließen?
SELECT * FROM artWork WHERE art_id in (
SELECT art_id FROM artWork AS a INNER JOIN userPrefs AS u ON ((
((u.media_oil='1' AND a.media_oil='1') OR
(u.media_acrylic='1' AND a.media_acrylic='1') OR
(u.media_wc='1' AND a.media_wc='1') OR
(u.media_pastel='1' AND a.media_pastel='1'))
etc, etc........................................
WHERE a.artist_id NOT EXISTS (
SELECT * FROM removeList AS r
WHERE r.artist_id = a.artist_id
AND r.user_id ='$user_id')
AND a.make_avail='1'
AND a.cur_select='1'
AND u.user_id='$user_id'
AND ((u.pref_painting='1' AND a.pref_painting='1') OR
(u.pref_photo='1' AND a.pref_photo='1') OR
(u.pref_paper='1' AND a.pref_paper='1') OR
(u.pref_print='1' AND a.pref_print='1') OR
(u.pref_draw='1' AND a.pref_draw='1') OR
(u.pref_sculp='1' AND a.pref_sculp='1') OR
(u.pref_install='1' AND a.pref_install='1') OR
(u.pref_vid='1' AND a.pref_vid='1') OR
(u.pref_public='1' AND a.pref_public='1') OR
(u.pref_indef='1' AND a.pref_indef='1'))
) ORDER BY date_submit DESC
Aber jetzt brauche ich bestimmte Zeilen auszuschließen, die in einem anderen 2-Säule (user_id & KUENSTLER_ID) Kind Tisch sein können: ‚removeList‘. Also versuche ich, ohne Erfolg, was beläuft sich auf eine „Triple-Join“ (suchen Sie nach dem Code um 'NICHT VORHANDEN):
SELECT * FROM artWork WHERE art_id in (
SELECT art_id FROM artWork AS a INNER JOIN userPrefs AS u ON (
(((u.media_oil='1' AND a.media_oil='1') OR
(u.media_acrylic='1' AND a.media_acrylic='1') OR
(u.media_wc='1' AND a.media_wc='1') OR
(u.media_pastel='1' AND a.media_pastel='1'))
etc, etc........................................
WHERE a.artist_id NOT EXISTS (
SELECT * FROM removeList AS r
WHERE r.artist_id = a.artist_id AND r.user_id ='$user_id'
)
AND a.make_avail='1'
AND a.cur_select='1'
AND u.user_id='$user_id'
AND ((u.pref_painting='1' AND a.pref_painting='1') OR
(u.pref_photo='1' AND a.pref_photo='1') OR
(u.pref_paper='1' AND a.pref_paper='1') OR
(u.pref_print='1' AND a.pref_print='1') OR
(u.pref_draw='1' AND a.pref_draw='1') OR
(u.pref_sculp='1' AND a.pref_sculp='1') OR
(u.pref_install='1' AND a.pref_install='1') OR
(u.pref_vid='1' AND a.pref_vid='1') OR
(u.pref_public='1' AND a.pref_public='1') OR
(u.pref_indef='1' AND a.pref_indef='1'))
) ORDER BY date_submit DESC
Bin ich hier zu weit reichend? Gibt es einen besseren Ansatz, den ich übersehe? Dank an alle.
Wow. Und * das ist abgeschnitten? –