2011-06-05 12 views
5

İkinci sütunun, tümü ilk sütununla eşleşmesi gereken farklı değerleri belirttiği bir ilişkilendirme tablosunun her sırasını seçen bir sorgu bulmaya çalışıyorum.MySQL sorgu karşılığı "AND", "IN" ise "VEYA" dır?

Örnek: X ve Y sütunlarım var. X, X'in her Y ile tanımlandığı X değerlerini almak istiyorum.

x y 
====== 
a 1 
a 2 
b 1 
a 3 
c 2 
c 3 

SELECT DISTINCT x FROM table WHERE y AND (2, 3)

elbette bu sorgu geçerli değil. Bir şekilde a ve c elde etmeyi beklerdim.

Ayrıca, MySQL sorgularını daha iyi öğrenmeye çalıştığım için, eğer verebiliyorsanız, cevabınızın arkasındaki mantığı açıklayabiliyor olsanız çok memnun olurum. Teşekkürler! :)

+0

Neden WHERE ... IN() 'nı kullanamazsınız? – Midas

+0

Girdi kümeniz belirsiz. Ek bir satır varsa (x = 'd', y = 3) - sorgunuz tarafından döndürülen? –

+1

onun anlamı, x'in _both_ 2 ve 3’ün 'y'’de görünmesini istediği odur. – Alnitak

cevap

11

Umarım bu aradığınız şeydir. Onaylarsanız, size soruyu açıklayacağım.

select x 
from table 
where y in (2,3) 
group by x 
having count(distinct(y)) = 2 
+0

Belki de ihtiyacım olan şey budur, ancak bazı nedenlerden dolayı test masamdan bir sonuç alamıyorum. – Lazlo

+0

Size sorgunuzu yazmak için örneğinizi kullandım :( –

+0

Aslında, tam olarak aynı tablonun sonuçları için söylediklerimi geri çekiyorum. Sadece kullandığım gerçek tablo için değil. Daha fazla deneyeyim. – Lazlo