我知道网络上有很多相关问题,第一个答案是GOOGLE it,我不需要第一个答案,因此感谢大家,第二个谢谢您。
我有4张桌子:
付款,InvoiceItem,用户,项目
关系:
付款.InvoiceItem_Id <-> InvoiceItem .InvoiceItemId
付款.User_Id <->用户.UserID
InvoiceItem .Item_Id <->项目.ItemsId
Payment.InvoiceItem_Id为NULLABLE,所以我的付款没有InvoiceItems
和查询是:
SELECT
Payment.Id,
Payment.User_Id,
Payment.InvoiceItem_Id,
User.Name,
Items.Name
FROM
Payment
LEFT OUTER JOIN
InvoiceItem ON Payment.InvoiceItem_Id = InvoiceItem.InvoiceItemId
INNER JOIN
User ON Payment.User_Id = User.UserID
INNER JOIN
Items ON InvoiceItem.Items_Id = Items.ItemsId
WHERE Payment.User_Id = 724;
如果将第三个INNER JOIN更改为LEFT OUTER,我将从付款中获得所有记录,但我不知道为什么要更改它,因为第三个INNER JOIN在InvoiceItem .Item_Id <-> Items .ItemsId和查询之间这些到表。
提前致谢。
因为一旦您离开外部联接到发票,对发票项目执行内部联接要求所有发票项目都存在,从而有效地消除了您在发票上的左联接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句