mysql - SQL 查询不适用于连接

标签 mysql sql

首先,小查询可以工作,但我需要在其中放置一些连接来创建条件。 小查询如下:

SELECT COUNT(vis.id), country.cod
FROM visits AS vis, countries AS country
WHERE country.description = vis.country
GROUP BY country.cod

现在的问题是我需要在 where 子句中添加另一个条件,而这个条件必然来自两个表的联接。

SELECT COUNT(vis.id), country.cod
FROM visits AS vis, countries AS country
INNER JOIN products AS prod ON prod.id = vis.id_product
INNER JOIN customers AS cust ON cust.id = prod.id_customer
WHERE country.description = visit.country AND prod.id_customer = 13
GROUP BY country.cod

我收到的错误是:

#1054 - Unknown column 'vis.id_product' in 'on clause'

相信我,这个领域是存在的。另外,我尝试过,只是为了测试,放置其他字段而不是 id_product ,错误是相同的。

最佳答案

您已为表visits指定了别名vis。现在你需要使用它。

SELECT COUNT(vis.id), country.cod
FROM visits AS vis JOIN
     countries AS country
     ON  country.description = vis.country JOIN
     products AS prod
     ON prod.id = vis.id_product JOIN
     customers AS cust
     ON cust.id = prod.id_customer
WHERE prod.id_customer = 13
GROUP BY country.cod;

此外,您还混合了隐式连接和显式连接。仅使用显式连接,其中连接条件位于 on 子句中,而不是位于 where 子句中。一个简单的规则:切勿在 from 子句中使用逗号。

关于mysql - SQL 查询不适用于连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23997809/

相关文章:

mysql - 在 MySQL 中使用 NOT IN 和 OR 无法按预期工作

sql - 另一个内部的 EXEC 存储过程不等待完成

mysql - MySQL join查询时用对应的值填充 'temporary'列,也限制

mysql查询(多次计数)

mysql - 过滤掉具有相同列的行

SELECT 中 date() 中的 MySQL 格式错误成功,但在 CREATE TABLE AS SELECT 中失败。那是对的吗?

mysql - 从 Webmatrix 导出 MySQL 数据库安装脚本

mysql - 如何使用 docker 将大型或中等大小的 SQL 转储导入 Mysql/MariaDB

php - 在 Laravel 图表上显示 2 位小数点

mysqltuner对my.cnf的建议和修改