Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 左联合&;模糊错误_Sql - Fatal编程技术网

Sql 左联合&;模糊错误

Sql 左联合&;模糊错误,sql,Sql,我正在努力解决一个(很可能)非常简单的问题。我不断得到以下错误: Error: ambiguous column name: Rek.name 好吧,理论上我知道这个错误的意思。然而,我不太明白为什么在我尝试使用这个时会出现: SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def FROM Rek, Fav LEFT JOIN Artist ON Rek.RekId = Fav.RekId; 为什么Rek.name

我正在努力解决一个(很可能)非常简单的问题。我不断得到以下错误:

Error: ambiguous column name: Rek.name
好吧,理论上我知道这个错误的意思。然而,我不太明白为什么在我尝试使用这个时会出现:

SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def
FROM Rek, Fav
LEFT JOIN Artist ON Rek.RekId = Fav.RekId;

为什么Rek.name模棱两可?如何使其不含糊?

如果要加入Fav表:

SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def
FROM Rek
LEFT JOIN Fav ON Rek.RekId = Fav.RekId
GROUP BY Rek.name;
如果您还需要艺术家表:

SELECT DISTINCT Rek.name AS abc, COUNT(DISTINCT Fav.FavId) AS def
FROM Rek
LEFT JOIN Fav ON Rek.RekId = Fav.RekId
LEFT JOIN Artist ON Rek.common_attribute= Artist.common_attribute
GROUP BY Rek.name;

嗯?我认为您想要的查询如下所示:

SELECT Rek.name AS abc, COUNT(Fav.RekId) AS def
FROM Rek LEFT JOIN
     Fav
     ON Rek.RekId = Fav.RekId
GROUP BY Rek.name;
注:

  • 不需要
    Artist
  • selectdistinct
    是执行
    groupby
    的笨拙方式
  • 据推测,
    fav.favid
    是主键。在这种情况下,不需要
    COUNT(DISTINCT)

您能发布表结构吗?不要将逗号分隔的隐式联接与显式联接混合使用。。。(实际上,始终执行显式
连接
)显式连接链在逗号分隔的隐式连接之前进行计算。因此,Rek表不在LEFT JOIN的ON子句的作用域内。您确定这是生成实际错误的查询吗?我认为它不应该给出这个错误。此外,您正在对
Artist
表进行交叉连接;可能不是你想要的。要做的事。别忘了分组。你用的是什么数据库?如前所述,您的查询没有对
Rek.name
的模糊引用。谢谢!看来解决办法很简单;删除第2行中的“Fav”。我想我必须进一步研究这一点,以正确理解左连接。无需在此处选择DISTINCT,因为GROUP BY不返回重复项。如果GROUP BY不返回重复项,我不会选择No