簡體   English   中英

SQL JOIN失敗的問題

[英]Issues with SQL JOIN failing

我嘗試創建以下JOIN

SELECT rating_draft_result.COUNT(id), rating_draft_result.user_id, rating_draft_result.result 
FROM rating_draft_result
INNER JOIN users ON
rating_draft_result.user_id, rating_draft_result.result = users.id

我想COUNTid “的rating_draft_result表秒,然后又SELECT user_ID的,並從該表中的結果。 然后,我試圖將user_id和rating_draft_result表的結果與用戶的id列進行匹配。 然后,我想從ID匹配的用戶表中獲取用戶名,但是我無法弄清楚那部分,並且無論如何我還是遇到了以下代碼錯誤。

我收到以下錯誤。

調查SELECT總計數prepare()失敗:SQL語法有錯誤; 檢查與您的MySQL服務器版本相對應的手冊,以在第4行的'.id'附近使用正確的語法

我的數據庫表看起來像這樣...

users
CREATE TABLE `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `firstname` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `lastname` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `email` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `phone_number` varchar(15) COLLATE utf8_unicode_ci NOT NULL,
 `username` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `password` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
 `salt` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
 `joined` datetime NOT NULL,
 `group` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=105 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

rating_draft_result
CREATE TABLE `rating_draft_result` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `user_id` int(11) NOT NULL,
 `result` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

我在查詢中做錯了什么?

期望的輸出:

用戶CREATE TABLE usersid``firstname``lastname``email``phone_number``username``password``salt``joined group

 1   Jack   Johnson  jack@email.com  2222  jackusername  ffd  fdddfd  today  1
 10   Tom   Thompson  fdfdfddf@fef.com 5555  Tomusername


rating_draft_result
     `id` `user_id` `result`
      20    1         10

我希望能夠將rating_draft_result的user_idresult與用戶表的id字段進行匹配。

所以我想獲取jackusername和tomusername字段。

檢查JOIN條件

SELECT rating_draft_result.user_id, rating_draft_result.result, COUNT(*)
FROM rating_draft_result
INNER JOIN users
  ON rating_draft_result.user_id = users.id
GROUP BY rating_draft_result.user_id, rating_draft_result.result;

你有

開啟rating_draft_result.user_id, rating_draft_result.result = users.id

問題出在您的JOIN ON子句中。 您需要像這樣更改它

INNER JOIN users ON
rating_draft_result.user_id = users.id

(OR)如果要同時具有兩個條件,請使用AND運算符,例如

FROM rating_draft_result
INNER JOIN users ON
rating_draft_result.user_id = users.id
AND rating_draft_result.result = users.id

更改整個查詢,如下所示

SELECT COUNT(rating_draft_result.id), 
rating_draft_result.user_id, 
rating_draft_result.result 
FROM rating_draft_result
INNER JOIN users ON
rating_draft_result.user_id = users.id
AND rating_draft_result.result = users.id;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM