我最近在mysql和我写的一个请求中工作:
SELECT SIGLE_EEP, ID_SOUS_MODULE, LIBELLE
FROM mef_edi.eep a, mef_edi.envoi e, mef_edi.sous_module s
WHERE a.ID_EEP = e.ID_EEP
AND a.ID_SOUS_MODULE = s.ID_SOUS_MODULE;
他们告诉我:
字段列表中的列
ID_SOUS_MODULE
不明确
我该怎么办?
答案 0 :(得分:2)
多个表都有一个名为ID_SOUS_MODULE
的列。
因此,每次提到列时都需要为表命名,以指定您所指的表。
更改
SELECT ID_SOUS_MODULE
例如
SELECT a.ID_SOUS_MODULE
答案 1 :(得分:0)
我同意上面的答案,你可能在3个表中有重复的列名,如上所述分配表id(a,e,s)将避免选择中的那个问题。除了@juergen所说的你可能想要通过使用内部或左边连接来摆脱笛卡尔连接(内部似乎是你想要的)。您加入表格的方式是将每个可能的行组合加在一起而不是过滤。随着表格数量的增长,使用正确的连接可以在长期内获得更好的性能。以下是非笛卡尔联合的示例:
SELECT SIGLE_EEP, ID_SOUS_MODULE, LIBELLE
FROM mef_edi.eep a
INNER JOIN mef_edi.envoi e ON (a.ID_EEP = e.ID_EEP)
INNER JOIN mef_edi.sous_module s ON (a.ID_SOUS_MODULE = s.ID_SOUS_MODULE)