2016-04-08 28 views
1

Aşağıda bir MySQL isteğim var ve bu doğru çalışmıyor.Sol birleştirme koşuluyla MySQL durum bildirimi

Hata:

#1054 - Unknown column 'uid' in 'on clause'

Sorgu:

Birazdan isteği yazabilirim nasıl
SELECT 
    u.email, 
    CASE 
    WHEN c.from_user_id = '301' THEN c.to_user_id 
    WHEN c.to_user_id = '301' THEN c.from_user_id 
    END AS uid 
FROM `contacts` AS c 
LEFT JOIN `users` AS u 
ON u.id = uid 
HAVING uid >0 

? WHERESELECT fıkra üzerlerinde çalışır önceki satırları bulmak için kullanılır, çünkü

+0

Neden "INNER JOIN" yerine "SOL JOIN" kullanıyorsunuz? "Kişiler" içinde "kullananlar" içinde olmayan kullanıcı kimlikleri var mı? – Barmar

cevap

1

Sen, aynı SELECT ait WHERE yan tümcesinde bir sütun diğer ad başvuruda bulunamaz. Bunu bir alt soruna koy.

SELECT u.email, c.uid 
FROM (SELECT CASE 
       WHEN from_user_id = '301' THEN to_user_id 
       ELSE from_user_id 
      END AS uid 
     FROM contacts 
     WHERE from_user_id = '301' OR to_user_id = '301') AS c' 
LEFT JOIN users AS u 
ON u.id = c.uid 
+0

Çok teşekkür ederim! İnsanlara yardım etmen çok önemli! – user889349

İlgili konular