sql数据库3表以上的左联查

sql数据库3表以上的左联查(小白分享)
1.先关联的表主表来left join 关联附属表,如果顺序搞反,筛选出来的结果会丢数据
2.有分组或者升序降序等操作,放到sql语句最后面,标注好具体是哪个表字段,否则报错
3.(推荐)多表联查可以分开几个sql写,然后在合到一起,这样思路清晰,容易找错
下面是3表联查数据,我用的表名和字段 根据自己表和字段替换(加油!)
SELECT
b.OrderCode,
b.BarCodeID,
b.ParentFile1,
b.OpeningProcessType,
b.RawMaterialType,
b.RawMaterialSpecification,
g.FirstAxialThickness as Banding1,
g.TwoAxialThickness as Banding2,
g.ThreeAxialThickness as Banding3,
g.FourAxialThickness as Banding4,
g.EdgeSealingMaterial as AlternateField1,
g.PlankStuffCode,
g.PlankStuffName,
g.PlankStuffSpec
FROM BOMInventory b
LEFT JOIN (
select
s.PlankStuffCode,
t.PlankStuffName,
t.PlankStuffSpec,
s.FirstAxialThickness,
s.TwoAxialThickness,
s.ThreeAxialThickness,
s.FourAxialThickness,
s.EdgeSealingMaterial
from T_PlankStuffInfo t
LEFT JOIN SheetData s on t.PlankStuffCode = s.PlankStuffCode
where 1=1
and (t.PlankStuffName is not null and t.PlankStuffName != ‘’ and t.PlankStuffSpec is not null and
t.PlankStuffSpec != ‘’)
and (s.FirstAxialThickness is not null and s.FirstAxialThickness != ‘’ and s.TwoAxialThickness is not null and
s.TwoAxialThickness != ‘’ and s.ThreeAxialThickness is not null and s.ThreeAxialThickness != ‘’ and
s.FourAxialThickness is not null and s.FourAxialThickness != ‘’ )
)g on g.PlankStuffName = b.RawMaterialType and g.PlankStuffSpec = b.RawMaterialSpecification
WHERE OrderCode = #{orderCode }
AND OpeningProcessType = #{openingProcessType }

猜你喜欢

转载自blog.csdn.net/hahezhen/article/details/89154486