多个表上的内连接,count&不同

时间:2015-02-09 12:30:34

标签: mysql sql

我有3个表,我正在尝试使用内连接加入这些表。但是,当我使用count(distinct column_id) mysql通过错误

SQL语法:检查

  

正确使用语法'(DISTINCT as_ticketvehicle_id)FROM as_vehicle INNER JOIN as_ticket

我的查询

SELECT 
            `as_vehicle`.`make`, `as_vehicle`.`model`, `as_odometer`.`value`
COUNT       (DISTINCT `as_ticket`.`vehicle_id`)
FROM        `as_vehicle`
INNER JOIN  `as_ticket`
ON          `as_vehicle`.`vehicle_id`  = `as_ticket`.`vehicle_id`
INNER JOIN  `as_odometer`
ON          `as_odometer`.`vehicle_id` = `as_vehicle`.`vehicle_id`
WHERE       `as_ticket`.`vehicle_id`   = 7
ORDER BY    `as_odometer`.`value`
DESC


Tbl as_vehicle
+------------+-------------+---------+
| vehicle_id |make         | model   | 
+------------+-------------+---------|
|          1 | HYUNDAI     | SOLARIS | 
|          2 | A638EA15    | ACCENT  | 
+-------------+------------+---------+

Tbl as_odometer;
+------------+-------+
| vehicle_id | value |
+------------+-------+
|          1 | 10500 |
|          5 | 20000 |
|          1 | 20000 |
+------------+-------+

Tbl service
+-----------+------------+
| ticket_id | vehicle_id |
+-----------+------------+
|         1 |          1 |
|         2 |          1 |
+-----------+------------+

2 个答案:

答案 0 :(得分:4)

您在count之前忘记了逗号。

SELECT `as_vehicle`.`make`, `as_vehicle`.`model`, `as_odometer`.`value`,
        count(DISTINCT `as_ticket`.`vehicle_id`) //            here ---^

答案 1 :(得分:2)

首先,你不应该在count()之后留一个空格并且你的逗号丢失(如上所述)。更重要的是,您没有group by,因此您的查询将返回一行。

并且,由于where子句,值始终为" 1"。您已将查询限制为仅一个车辆ID。

我怀疑你想要的查询更像是:

SELECT `as_vehicle`.`make`, `as_vehicle`.`model`, `as_odometer`.`value`
       COUNT(*)
FROM `as_vehicle` INNER JOIN 
     `as_ticket`
     ON `as_vehicle`.`vehicle_id`  = `as_ticket`.`vehicle_id` INNER JOIN
     `as_odometer`
     ON `as_odometer`.`vehicle_id` = `as_vehicle`.`vehicle_id`
WHERE `as_ticket`.`vehicle_id` = 7
GROUP BY `as_vehicle`.`make`, `as_vehicle`.`model`, `as_odometer`.`value`
ORDER BY `as_odometer`.`value` DESC;

此外,您应该学会使用表别名,并且所有那些反引号都不能帮助查询。

相关问题