我最近遇到了一个问题,我确定它是因为我加入它们的方式。 这是我的代码:
select LP_Pending_Info.Service_Order,
LP_Pending_Info.Pending_Days,
LP_Pending_Info.Service_Type,
LP_Pending_Info.ASC_Code,
LP_Pending_Info.Model,
LP_Pending_Info.IN_OUT_WTY,
LP_Part_Codes.PartCode,
LP_PS_Codes.PS,
LP_Confirmation_Codes.SO_NO,
LP_Pending_Info.Engineer_Code
from LP_Pending_Info
join LP_Part_Codes
on LP_Pending_Info.Service_order = LP_Part_Codes.Service_order
join LP_PS_Codes
on LP_Pending_Info.Service_Order = LP_PS_Codes.Service_Order
join LP_Confirmation_Codes
on LP_Pending_Info.Service_Order = LP_Confirmation_Codes.Service_Order
order by LP_Pending_Info.Service_order, LP_Part_Codes.PartCode;
对于每个服务订单,我最多有5个部分代码。
例如:此服务订单“4182134076”只有2个部分代码,第一个是“GH81-13601A”,第二个是“GH96-09938A”,因此它应该显示数据2次,但重复8次。什么似乎是问题?
答案 0 :(得分:2)
如果您的记录完全相同,distinct
关键字就会解决它。
但是,在第2行和第3行中,Service_Order
和Part_Code
具有相同的SO_NO
,如果您检查join
,则表明它是不同的 - 这就是为什么“不同”在这里不起作用的原因 - 行不相同。
我说你在SO_NO
的某个条件中遇到了一些问题。不同的数据位于LP_Confirmation_Codes
列中,因此请检查Service_Order
表中select * from LP_Confirmation_Codes where Service_Order = 4182134076
的原始数据:
and
我假设您错过了LP_Part_Codes
来自LP_PS_Codes
或and
的值(但如果没有自己查看这些表和数据,则无法确定)。
通过这句话如果服务订单只有一个值,它会正确显示结果,但是当它有多个零件代码时,问题就会开始。 - 可能你错过了LP_Part_Codes
使用domain.com/
|--larco
|-- public_html/
| |--laravel
表
答案 1 :(得分:0)
根据您的输出结果,以下是导致多次输出的以下数据。
Service Order: 4182134076
有:
2 PartCode
GH81-13601A
和GH96-09938A
2 PS
U
和P
2 SO_NO
1.00024e+09
和1.00022e+09
因此2 ^ 3返回8行。我相信你需要检查你应该加入你的桌子的位置。
答案 2 :(得分:-1)
使用DINTINCT
select distinct LP_Pending_Info.Service_Order,LP_Pending_Info.Pending_Days,
LP_Pending_Info.Service_Type,LP_Pending_Info.ASC_Code,LP_Pending_Info.Model,
LP_Pending_Info.IN_OUT_WTY, LP_Part_Codes.PartCode,LP_PS_Codes.PS,
LP_Confirmation_Codes.SO_NO,LP_Pending_Info.Engineer_Code
from LP_Pending_Info
join LP_Part_Codes on LP_Pending_Info.Service_order = LP_Part_Codes.Service_order
join LP_PS_Codes on LP_Part_Codes.Service_Order = LP_PS_Codes.Service_Order
join LP_Confirmation_Codes on LP_PS_Codes.Service_Order = LP_Confirmation_Codes.Service_Order
order by LP_Pending_Info.Service_order, LP_Part_Codes.PartCode;
distinct不会根据您的选择返回重复项。因此,如果一行相同,则只返回一次。