2015-02-09 48 views
1

我有3個表,我試圖通過內部連接來連接這些表。然而,當我使用count(distinct column_id)它的mysql通過錯誤是在多個表上的內部連接,計數和明確

SQL語法:檢查

爲正確的語法使用近「(DISTINCT as_ticketvehicle_id)從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 | 
+-----------+------------+ 

回答

4

您忘記了逗號前count

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

哦,我已經試過了......現在它通過這個錯誤 – 2015-02-09 12:33:36

+0

語法在'DISTINCT' as_ticket'.'vehicle_id'附近使用)FROM'as_vehicle' INNER JOIN'as_ticket – 2015-02-09 12:34:03

+0

'count'有一些不可見的字符'。刪除該部分並在鍵盤上再次寫下它。之後,它爲我工作。 – 2015-02-09 12:38:08

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; 

此外,你應該學會使用表的別名和所有那些反引號不幫助查詢。

+0

謝謝Gordon Linoff,它解決了。由juergen。真的感謝您的關注Ò – 2015-02-09 12:51:22