SQL在查询中连接三个表

时间:2017-11-16 18:49:01

标签: sql select

Sample-Results

我正在尝试在查询中加入3个表。情况如下:

我有两张桌子(铭文和费用),在第三张桌子上有二级钥匙。

  • 题记
  • 票据
  • 费用

我可以在账单上找到铭文和费用。我可以将铭文与账单相关联,但不能将费用与铭文联系起来。

当放置铭文时,有一些费用适用于该铭文加上铭文价格本身。 BillID可以同时使用铭文价格和费用。

表账单是中间人。我相信,如果我有一个BillID,我可以将费用分配给题词。但这是我的挑战。

select
*
from bills i
left join  Inscription ip
on ip.Idinscription = i.IDinscription
left join  fees f
on f.IDfee = i.Idfee

当我有IDfee时,IDinscription为null,当我有IDinscription时,IDfee也为空。账单和费用都有相同的IDbill。

results requested

3 个答案:

答案 0 :(得分:0)

EDIT 尝试运行以下内容:

SELECT DISTINCT * FROM bills i
LEFT JOIN inscription ip
ON ip.idInscription = i.idInscription
LEFT JOIN fees f ON f.idFee = i.idFee 
WHERE i.idFee IS NOT NULL AND i.idInscription IS NOT NULL

此查询将向您显示与每个铭文相关的费用。我相信你的数据库结构非常有条理。一个铭文有一个账单,每个账单都有很多费用。

答案 1 :(得分:0)

你可以这样试试:

SELECT b.idbill, p.idinscription, f.idfee
FROM bills b
INNER JOIN
(SELECT idinscription
 FROM inscription
 WHERE idinscription IS NOT NULL) p ON b.idinscription = p.idinscription
INNER JOIN
(SELECT idfee
 FROM fee
 WHERE idfee IS NOT NULL) f ON b.idfee = f.idfee

答案 2 :(得分:0)

选择不同的*从我离开的账单加入Inscription ip on ip.Idinscription = i.IDinscription left join fee f on f.IDfee = i.Idfee其中i.idfee不为null且i.idinscription不为null给你一个语法问题? - Joseph Cho 20分钟前

谢谢Joseph Cho先生。您的查询回答了我的问题。我要将我的sql结果移动到SSRS。谢谢 - 祝福2分钟前编辑