2013-05-15 5 views
1

J'ai 3 tables dans sqlSélectionnez plusieurs colonnes de plusieurs tables?

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 

STable:

Prdnum      brand 
1       somedata 
2       somedata 
3       somedata 
4       somedata 

La Prdnum est la clé primaire. Ici, je dois sélectionner le Prdnum de PTable et la marque de StablePrdnum appartient et Data de QTable appartient à Prdnum, et une autre condition est la Prdnum ne pas avoir Pid=2 dans QTable.

J'ai essayé un code comme

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

mais comment puis-je choisir Brand et Data d'autres tables?

+1

essayer une jointure ... peut-être? – Mingebag

+0

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

+0

En savoir plus sur les jointures ANSI 92 Explication visuelle [ici] (http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html) – xQbert

Répondre

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 Mais cette requête sélectionne aussi le Prdnum ayant Pid = 2 ... – Arun

+0

@ user2318361 impair .. quel type de données est Pid? si elle est '' essayer varchar' « 2'' au lieu de simplement' 2' –

+0

J'ai essayé basé sur vous répondre et j'ai obtenu la réponse requise .. Merci beaucoup Monsieur SELECT REPLACE (P.Prdnum, » ',' ') COMME ITEMNUMBER, S.BRAND, Q.Data DE PTable P JOIN QTable Q SUR P.Prdnum = Q.Prdnum JOIN STable S ON P.Prdnum = S.Prdnum O WH P.PrdnumNOT IN (SELECT N.Prdnum FROM QTable N O WH N.Pid = 2) – Arun

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

Je PTable ignoré, vous pouvez l'inclure dans le cas où il existe des produits dans ce tableau non disponibles dans les 2 autres tables (à l'aide d'une jointure externe)

Questions connexes