Kullanıcı / Abone sql sorgusu

1 Cevap php

Ben geçerli kullanıcı henüz abone değil tüm kayıtlı kullanıcıları gösteren bir tablo oluşturma. Birini abone Ama bir kez, ben bu dışlamak için bu listeyi süzmek gerekir.

En subscribed adında bir tablo kullanıcı listeler ve kime o abone olduğu için gidecekseniz diyelim.

|UserId||SubscriberID|

Onun birden fazla sorgu içine yapmak kolay, ama ben başarısız MySQL aramaların ekstra bir döngü kurtarmak için, bir sorgu haline yapmaya çalışıyorum.

İşte ben bugüne kadar neler bulunuyor:

 SELECT u.UserID, FullName, UserName from users u 
    LEFT JOIN subscribed t ON 
     ((u.UserName LIKE '%$search%' OR 
       u.Email LIKE '%$search%') AND 
      ({$_SESSION['ID']} = t.UserID 
        AND t.FollowerID != u.UserID)
     )

Ben kimliği ve FollowerID belirli bir satırda değil, tüm tablo için maç yoksa sadece karşılaştırmak beri sorgunun son bölümü, yanlış olduğunu biliyorum.

1 Cevap

Tablo B'de olmayan tablo A sonuçların bir listesini bulmak için, iki seçeneğiniz var. NOT IN sözdizimi, ya da LEFT JOIN kullanımı ve B tablosundaki PK alan bir nokta olduğu ya NULL.

NOT IN, örneğin:

SELECT a.id FROM a WHERE a.id NOT IN (SELECT b.id FROM b)

LEFT JOIN, örneğin:

SELECT a.id FROM a LEFT JOIN b ON (a.id = b.id) WHERE (b.id IS NULL)