2016-04-14 35 views
0

yılında koşul ben bu sorguyu yazdımnasıl alınır veriler SQL

courses         degree_plan 
--------------------     ------------------------     
course  course_no     major  course_no 
--------------------     ------------------------ 
CHEM101  1      COE    1 
Math101  2      SWE    1 
             SWE    2 

student         equal 
-------------------------------  ---------------------------------------- 
course_no  ID  grade  course_no course equivalent ID 
-------------------------------  ---------------------------------------- 
1    5544  A   1  CHEM101 chemistry 1 5544 
1    5533  A   2  Math101 mathematics 1 5533 
2    5533  B 

benim veritabanında bu tabloları var göre çoklu tablolar oluşturur

SELECT * FROM courses LEFT JOIN equal ON equal.course_no=courses.course_no 
LEFT JOIN degree_plan ON degree_plan.course_no =courses.course_no 
LEFT JOIN student ON courses.course_no= student.course_no 
AND student.id=5533 WHERE degree_plan.major='SWE'; 

Bu sorgu çalıştırdığınızda o tüm satırları almak eşit tablo Ben istemiyorum çünkü ben sorguda yazılı öğrenci kimliğine göre eşit tablodan almak istiyorum. Ben katılmak sol çıkarmadan id göre eşit tablodan almak üzere sorguyu çalıştırabilirsiniz nasıl

? Ben bir sol ihtiyaç öğrenci için düşünüyorum

+1

. "WHERE" maddesine ekleyerek "SOL JOIN" öğesini "INNER JOIN" içine dönüştürüyorsunuz. – Siyual

+0

Tam olarak ne istediğini net değil "Tüm sıralar eşit tabloda" anlamsızdır. Örnek verilerinizi burada kullanarak istediğiniz sonuçları gösterebilir misiniz? – JNevill

+0

çıktı ben kimliği yerine onları açıklayan yerine, örnek çıktı ve istenilen çıktıyı göstermek Lütfen eşit tabloda – Maikel

cevap

0

katılmak ve sadece WHERE fıkrada AND equal.id=5533 taşımak gerekir

SELECT * FROM courses LEFT JOIN equal ON equal.course_no=courses.course_no 
    LEFT JOIN degree_plan ON degree_plan.course_no =courses.course_no 
    LEFT JOIN student ON (courses.course_no= student.course_no 
     AND student.id=5533) 
    WHERE degree_plan.major='SWE'; 
+0

sol' SOL JOIN' * çıkarmadan i * cevap – Maikel

+0

için hiçbir çıkış ile deneyin – scaisEdge

-1
SELECT * FROM courses LEFT JOIN equal ON equal.course_no=courses.course_no 
LEFT JOIN degree_plan ON degree_plan.course_no =courses.course_no 
LEFT JOIN student ON courses.course_no= student.course_no 
WHERE degree_plan.major='SWE' AND equal.id=5533; 

(koşul).

`SOL JOIN` için` degree_plan` için `ON` durumuna sizin` WHERE` fıkra koşulunu Taşı
+0

OP'ın soru özellikle diyor güncellemek zorunda katılmak INNER JOIN's. – Siyual

+0

Bu sorgu için çıktı yok – Maikel

+0

Pls Sorunuzu istediğiniz çıktıda düzenleyin, çünkü ne istediğinizi anladığından emin değilim. Ve cevabımı düzenledim. –

İlgili konular