【问题标题】:How can I delete duplcation from my joined tables?如何从连接的表中删除重复项?
【发布时间】: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,编辑原问题。对 cme​​ts 采取行动。然后等待它足够改进后投票开放。
  • 您的查询涉及 4 个表。至少一个关系会产生重复。您可以将查询分成更小的部分,一个一个地添加连接,并在出现重复时停止。

标签: sql join select datatables duplicates


【解决方案1】:

也许很简单

"从 TABLE 中选择不同的 *"

可以帮助你。

谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-14
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多