"Üçlü Katıl"?

0 Cevap php

Tamam bu (kesildi sorgu) iyi çalışır. Bunu düzeltmek için bir ay önce bazı uzman tavsiyesi var.

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

'RemoveList': Ama şimdi başka 2 sütuna (User_id & artist_id) alt tablosu olabilir belirli satırları dışlamak gerekir. Yani tutarı ne başarı olmadan çalışıyorum bir ('MEVCUT DEĞİL' etrafında kodu arayın) "üçlü join":

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

Ben buradan çok uzak ulaşıyor muyum? Ben bakan ediyorum daha iyi bir yaklaşım var. Herkese teşekkürler.

0 Cevap