2013-05-15 167 views
1

我有3個表中的SQL從多個表中選擇多個列?

PTABLE

Prdnum 
1 
2 
3 
4 
5 
6 
7 

Qtable

prdnum  Pid    Data 

1    1    somedata 
1    2    somedata 
2    1    somedata 
3    1    somedata 
3    2    somedata 
4    1    somedata 

穩定

Prdnum      brand 
1       somedata 
2       somedata 
3       somedata 
4       somedata 

Prdnum是主鍵。在這裏,我需要從PTablePrdnum和品牌屬於PrdnumQTableStableData屬於Prdnum,另一個條件是Prdnum不具有QTablePid=2

我試着像

SELECT Prdnum 
FROM PTable 
WHERE Prdnum NOT IN (SELECT Prdnum FROM QTable WHERE Pid=2) 

一些代碼,但我怎麼可以從其他表中選擇BrandData

+1

嘗試加入...也許? – Mingebag

+0

http://www.w3schools.com/sql/sql_join.asp –

+0

瞭解ANSI 92連接。視覺解釋[這裏](http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) – xQbert

回答

2
SELECT p.Prdnum, s.Brand, q.Data 
FROM PTable p 
JOIN STable s on p.Prdnum = s.Prdnum 
JOIN QTable q on p.Prdnum = q.Prdnum 
WHERE q.Pid != 2 
+0

@ david.s但是這個查詢也選擇了帶有Pid的Prdnum = 2 ... – Arun

+0

@ user2318361奇怪..什麼數據類型是Pid?如果是'varchar'嘗試'「2'',而不是僅僅'2' –

+0

我試過此基礎上你回答,我得到所需答案.. 非常感謝爵士 選擇替換(P.Prdnum」 ','')AS ITEMNUMBER,S.BRAND,Q.Data FROM PTable P JOIN QTable Q ON P.Prdnum = Q.Prdnum JOIN STable S ON P.Prdnum = S.Prdnum WHERE P.PrdnumNOT IN( SELECT N.Prdnum FROM QTable N WHERE N.Pid = 2) – Arun

2
select * 
from Qtable 
inner join STable 
on Qtable.prdnum = STable.prdnum 
where (Qtable.prdnum <> 2); 

我忽略PTABLE,可以將其包含的情況下有2個其他表中不可用的產品在此表(使用外連接)