2016-03-23 15 views
0

I şemalar varsa:çoklu SELECT ifadeleri

Türü (a, b, c, d)

adı (örneğin, b, g)

I Sonuçta ortaya çıkan Adın 'E' yi, 'D' nin paylaşılan 'B' kullanarak eriştiğimiz bir sayıdan daha büyük olduğu yerde bulmaya çalışıyorum.

SELECT e FROM Name WHERE b = (SELECT b FROM Type WHERE d > 1); 

birisi sözdizimi hatası açıklamak ve nasıl SEÇ ifadeleri iç içe veya İki tablo katılmak zorunda yapacağız için Can:

ben gibi birden SEÇ ifadeleri var nasıl anlamaya çalışıyorum.

Teşekkür

+0

'=' tek değerleri karşılaştırır. '(b) 'yi seçerseniz ** MULTIPLE ** değerlerini döndürebilirsiniz, yani bunun yerine' IN (....) 'dır. –

cevap

2

Bu basit INNER JOIN işlemi kullanılarak yapılabilir:

SELECT DISTINCT n.e 
FROM Name AS n 
INNER JOIN Type AS t ON n.b = t.b 
WHERE t.d > 1 

Ayrıca EXISTS kullanabilirsiniz:

SELECT n.e 
FROM Name AS n 
WHERE EXISTS (SELECT 1 
       FROM Type AS t 
       WHERE n.b = t.b AND t.d > 1) 
0

ben yerine =

ait IN kullanmak istiyorum düşünüyorum Bir değeri başka bir değere kıyasla karşılaştırmak için

=.
IN, bir değerin var olup olmadığını görmek için birden çok değerin listesini beyazlatır.

+0

Birleşim kullanmak çok daha iyi olurdu. –

+0

@IkeWalkern, 'JOIN'i sorgusu yanlış yapmak için kullanmak daha mı iyi? – mongotop

+1

Sormak istersen neden bir JOIN daha iyi? – Pipeline