2011-04-25 11 views
0

我有一個問題,試圖根據用戶的ID計數用戶記錄的數量,但是我使用子查詢來加入2個表中有一個計數參數,但我得到一個錯誤說duplicate column name 'user_id重複的列名'user_id'問題

查詢:

$sql = "SELECT loc.location_id, 
       COUNT(loc.location_id) AS total_records 
     FROM locations loc 
     LEFT JOIN 
     (
      SELECT usr.*, 
        loc.* 
      FROM 
      (
       members usr 

       INNER JOIN locations loc 
      ) 
      WHERE usr.user_id = " . $user_id . " 
      AND usr.account_disabled = 0 
      ORDER BY loc.submit_date DESC 
     ) usr ON (loc.user_id = usr.user_id)"; 

所有我需要的是返回用戶的信息和total_records數由COUNT函數來完成。

乾杯。

編輯:

這是我所得到的返回這個SQL:

SELECT loc.location_id, 
     loc.street_name, 
     loc.city, 
     loc.state, 
     loc.county, 
     loc.country, 
     usr.user_id, 
     usr.username, 
     COUNT(loc.location_id) AS total_records 
FROM locations loc 
INNER JOIN members usr ON (loc.user_id = usr.user_id)    
WHERE loc.user_id = $user_id 
AND usr.account_disabled = 0 
GROUP BY loc.location_id 

enter image description here

+1

這是不是一個「查詢」,它是PHP和查詢的組合。去除所有變量(用實際值替換它們)並放入原始的sql。 – zerkms 2011-04-25 22:58:02

回答

2

這不完全清楚爲什麼你有導出結果集或LEFT JOIN。試試這個:

SELECT loc.location_id, 
      COUNT(loc.location_id) AS total_records 
FROM  LOCATIONS_TABLE loc 
INNER JOIN MEMBERS_TABLE usr 
     ON (loc.user_id = usr.user_id)    
WHERE loc.user_id = $user_id 
AND usr.account_disabled = 0 
GROUP BY loc.location_id 
+0

嗯。工作正常,但只返回一條記錄(必須是因爲user_id的限制,只有一個用戶),但我有多個記錄由用戶完成,我需要返回用戶完成的記錄(包括記錄數)。 – MacMac 2011-04-26 09:21:04

+0

嘿。你能幫忙嗎? :-) – MacMac 2011-04-26 14:40:25

+0

這似乎並不奏效,恐怕。如果我刪除'COUNT(loc.location_id)AS total_records',它將顯示用戶的記錄。但將它留在那裏將返回1個用戶記錄。 – MacMac 2011-04-26 15:44:23

1

我認爲這個問題是這一部分:

SELECT usr.*, 
     loc.* 

兩個表都有一個USER_ID