【发布时间】:2020-06-20 06:55:06
【问题描述】:
我想知道如何摆脱由于我在不同之间的连接而产生的重复项?
这是我的要求:
SELECT
T_OF.OFID, T_OF.OFDateDPrev, T_OF.OFDateFPrev,
DATEDIFF (second, T_OF.OFDateDPrev, OFDateFPrev) AS DureePrevSec,
T_OF.OFDateDReelle,
T_OF.OFDateFReelle,
DATEDIFF (second, T_OF.OFDateDReelle, OFDateFReelle) AS DureeRelleSec,
T_OF.OFEtat,
T_OF.OFDateState,
T_Sequence_phase_OF.SeqPhaseNom,
T_OF.OFQtyPrev,
T_OF.OFQtyReal,
T_OF.ArtID,
T_OF.UnitID,
T_OF_Nomenclature.OFNomQty,
T_OF.LineID,
T_OF_User.OFUserID,
T_Sequence_phase_OF.SeqPhaseId,
T_Sequence_phase_OF.SeqId,
T_Sequence_phase_OF.SeqPhaseEtat,
T_Sequence_phase_OF.SeqPhaseDateEtat,
T_Sequence_phase_OF.SeqPhaseDateDebut,
T_Sequence_phase_OF.SeqPhaseDateEnd
INTO T_tracing2
FROM T_OF
INNER JOIN T_OF_Nomenclature
ON T_OF.OFID = T_OF_Nomenclature.OFID
INNER JOIN T_OF_User
ON T_OF_User.OFID = T_OF.OFID
INNER JOIN T_Sequence_phase_OF
On T_Sequence_phase_OF.OFId = T_OF.OFID
ALTER TABLE T_tracing2 ADD OFUserPrevID VARCHAR (200) DEFAULT '1'
ALTER TABLE T_tracing2 ADD LineID VARCHAR (200) DEFAULT '100'
ALTER TABLE T_tracing2 ADD ArtPrevID VARCHAR (200) DEFAULT '245'
重复项在 SeqPhaseNom 列中,因为我突然进行了 3 次连接,这个字段在我的表中重复了 3 次。
我举一个表格的例子: T_OF 表:
T_OF
OFID OFDateDPrev OFDateFPrev
159 2019-12-17 16:30:00.000 2019-12-19 00:00:00.000
160 2019-12-19 16:38:36.743 2019-12-19 17:38:36.743
161 2019-12-19 00:00:00.000 2019-12-19 08:00:00.000
162 2020-01-15 00:00:00.000 2020-01-16 00:00:00.000
163 2020-01-15 12:22:18.090 2020-01-15 13:22:18.090
164 2020-01-15 12:31:20.053 2020-01-15 13:31:20.053
165 2020-01-15 13:45:22.467 2020-01-15 14:45:22.467
166 2020-01-16 08:03:00.000 2020-01-16 08:06:00.000
T_Sequence_Phase_OF 表:
T_Sequence_Phase_OF
OFId SeqPhaseNom SeqPhaseId SeqPhaseEtat SeqPhaseDateDebut
161 Debut 1 170 2019-12-19 16:51:46.523
161 Ecriture 2 140 2019-12-19 16:51:47.323
164 Debut 3 170 2020-01-15 12:31:54.617
164 Boucle Flacon4 170 2020-01-15 12:31:55.587
164 Stockage 5 160 2020-01-15 12:31:56.183
165 Debut 6 170 2020-01-15 13:45:32.307
165 Boucle Flacon 7 170 2020-01-15 13:45:32.823
165 Stockage 8 170 2020-01-15 13:45:33.407
165 Remplissage 9 170 2020-01-15 14:03:58.283
165 Bouchonnage 10 170 2020-01-15 14:04:03.350
165 Destockage 11 170 2020-01-15 14:04:07.383
165 Retour boucle flacon 14 170 2020-01-15 14:04:14.220
165 Boucle Flacon 15 170 2020-01-15 14:04:14.917
165 Stockage 16 170 2020-01-15 14:04:15.603
165 Remplissage 17 170 2020-01-15 14:05:37.443
165 Bouchonnage 18 170 2020-01-15 14:05:41.340
T_OF_user
T_Users
OFId OFUserID
161 108
162 109
162 110
163 111
164 112
165 113
T_ 命名表:
T_Nomenclature
OFId OFNomQty
159 3.0000
162 40.0000
162 4.0000
162 4.0000
163 3.0000
163 3.0000
163 3.0000
164 40.0000
164 4.0000
164 4.0000
这个查询的结果是:
OFID OFDateDPrev OFDateFPrev SeqPhaseNom
164 2020-01-15 2020-01-15 Debut
164 2020-01-15 2020-01-15 Debut
164 2020-01-15 2020-01-15 Debut
164 2020-01-15 2020-01-15 Boucle Flacon
164 2020-01-15 2020-01-15 Boucle Flacon
164 2020-01-15 2020-01-15 Boucle Flacon
164 2020-01-15 2020-01-15 Stockage
164 2020-01-15 2020-01-15 Stockage
164 2020-01-15 2020-01-15 Stockage
165 2020-01-15 2020-01-16 Debut
165 2020-01-15 2020-01-15 Debut
165 2020-01-15 2020-01-15 Debut
165 2020-01-15 2020-01-15 Boucle Flacon
165 2020-01-15 2020-01-15 Boucle Flacon
165 2020-01-15 2020-01-15 Boucle Flacon
.....
我们有三个相同的 SeqPhaseNom,因为我执行了三个连接
而我想要得到的结果是:
OFID OFDateDPrev OFDateFPrev SeqPhaseNom
164 2020-01-15 2020-01-15 Debut
164 2020-01-15 2020-01-15 Boucle Flacon
164 2020-01-15 2020-01-15 Stockage
165 2020-01-15 2020-01-15 Debut
165 2020-01-15 2020-01-15 Boucle Flacon
....
也许我的要求做得不好。也许我必须使用几个嵌套的 SELECT 但我不知道如何?
有什么帮助吗?
【问题讨论】:
-
请勿转发your closed question,编辑原问题。对 cmets 采取行动。然后等待它足够改进后投票开放。
-
您的查询涉及 4 个表。至少一个关系会产生重复。您可以将查询分成更小的部分,一个一个地添加连接,并在出现重复时停止。
标签: sql join select datatables duplicates