2016-03-20 14 views
0

Benim platformdan rapor: Ubuntu 12.04 Benim veritabanında var :
- tablo1: kutusu, tepsi, ...
- table2: tepsi, cıvata, ...2 tablo sorgusu - Her seçim ve her iki

bu sql sorgusu denedim:

select `tray`,bolt from table2 where `tray` in (select `tray` from table1 where `box` > 11); 

bana tepsiler ve civata bir listesini verir.

Sahip olmak istiyorum: kutu, tepsi ve cıvataları çıkış olarak. Nasıl?

şimdiden teşekkürler. Ekstra kredi için iyi bir öğreticiye bir işaretçi? :-)

Sen bir iç kullanmalıdır

cevap

1

(IN yerine katılmak): Genel olarak

SELECT t.tray,t.bolt,s.box 
FROM table2 t 
INNER JOIN table1 s 
ON(t.tray = s.tray and s.box > 11) 

@Reto belirtildiği gibi, you can read about joins here!

: Sahip, daha sonra 1 tablodan veri almak için JOIN kullanmak ya da select'te bir alt sorgu kullanmak.

alt sorguda (korelasyon sorgu) ile çözüm: JOIN bir Aradığınız

SELECT t.box,t.tray, 
     (select s.bolt from table2 s where s.tray = t.tray) as bolt 
FROM table1 t 
WHERE t.box > 11) 
+1

Ve iki tablo/kuruluşlar katılmak farklı yollar hakkında öğretici: http : //www.sitepoint.com/understanding-sql-joins-mysql-database/ – Reto

+0

Bunu doğru olarak işaretledim çünkü anladım 1 ("using" kullanımı 1. derecede şaşırtıcıydı.) Ayrıca en çok yardımcı olan https://www.techonthenet.com/sql/joins.php – gene

1

:

select t1.box, tray, t2.bolt 
from table1 t1 join 
    table2 t2 
    using (tray) 
where t1.box > 11; 
İlgili konular