2015-06-30 102 views
2

我被困在查询,我想要显示来自不同的表和他们的桥表的数据。
表是:sql加入进一步需要帮助

bridge (bid,planid,fbridgeid) 
fbridge (fbridgeid,featureid,valueid) 
features (featureid,fname) 
value (valueid,value) 
plans (planid,name,price,discount) 

下面是到目前为止我的查询:

SELECT 
(NAME AS pname, price AS prize, 
discount AS ds, fname AS feature, VALUE AS vlue 
FROM plans ) 

我想所有的数据库列,但按照计划

like planid 1 ->> contains ->> feature id 1,2,3 and valueid 1,3,5 etc) 

回答

0

加入你的表在他们正确的领域。

SELECT * 
FROM plans p 
INNER JOIN bridge b ON p.planid = b.planid 
INNER JOIN fbridge fb ON b.fbridgeid = fb.fbridgeid 
INNER JOIN features f ON fb.featureid = f.featureid 
INNER JOIN value v ON fb.valueid = v.valueid 

然后,您可以从它们中选择任何字段。

SELECT p.name AS pname, p.price AS prize, p.discount AS ds, f.fname AS feature, v.value AS vlue 
FROM plans p 
INNER JOIN bridge b ON p.planid = b.planid 
INNER JOIN fbridge fb ON b.fbridgeid = fb.fbridgeid 
INNER JOIN features f ON fb.featureid = f.featureid 
INNER JOIN value v ON fb.valueid = v.valueid 
1

Join旨意是:

SELECT pl.name AS pname, pl.price AS prize , pl.discount AS ds , fe.fname AS feature, va.VALUE AS vlue 
FROM plans pl 
JOIN bridge br ON br.planid = pl.planid 
JOIN fbridge fb ON fb.fbridgeid = br.fbridgeid 
JOIN features fe ON fe.featureid = fb.featureid 
JOIN value va ON va.valueid = fb.valueid 
WHERE pl.plainid = 1 
+0

非常感谢所有查询的工​​作方式相同..但被重复数据..我也用'选择P档用组.name AS pname,p.price AS prize,p.discount AS ds,f.fname AS feature,v.value AS vlue FROM plans p INNER JOIN bridge b ON p.planid = b.planid INNER JOIN fbridge fb ON b.fbridgeid = fb.fbridgeid INNER JOIN功能F于fb.featureid = f.featureid INNER JOIN值V ON fb.valueid = v.valueid GROUP BY pname' –

+0

结果:'PNAME奖品DS设有vlue
介质30 20 discspace 20GB 小20 15 bw 30gb' –

0
select b.bid,b.planid,b.fbridgeid,fb.fbridgeid,f.featureid,f.fname,v.valueid,v.value,p.name,p.price,p.discount from bridge as b 
inner join fbridge as fb on fb.bridgeid=b.bridgeid 
inner join features as f on f.featureId=fb.featureid 
inner join value as v on v.valueid=fb.valueid 
inner join plans as p on p.planid=b.planid 
where p.planid=1 and f.featureId in (1,2,3) and v.valueid in (1,3,5) 
+0

在'内部连接fbridgeid中的拼写错误为fb',它应该是'内部连接fbridge为fb' – Arulkumar

+0

You Are Right .. –