2016-04-28 132 views
0

重複的結果我已經使用提出了計算器的所有解決方案來解決我的probleme,但它仍然沒有解決:無法避免在MySQL查詢

我需要得到無重複的plan_id的數據類型有序投標的用戶。這是我使用的查詢:

SELECT DISTINCT b.*, u.username, u.name, s.plan_id, s.user_id FROM #__jb_bid b 

    "INNER JOIN #__users u ON b.user_id=u.id ". 
    "INNER JOIN #__jb_plan_subscr s ON b.user_id=s.user_id ". 
    "WHERE b.project_id =".$id."". 
    "ORDER BY s.plan_id"; 

我使用的Joomla 3和個性化的組件,我有這樣的結構:

__jb_bid TABLE:

------------------------------------ 
|id | user_id | project_id | 
|----------------------------------- 
|1 | 22  |  1  | 
|2 | 24  |  1  | 
|3 | 23  |  1  | 
|4 | 25  |  1  | 
|5 | 26  |  2  | 
------------------------------------ 

__jb_users TABLE:

------------------------------------ 
|id | username | name   | 
|----------------------------------- 
|22 | username22 |  name22  | 
|23 | username23 |  name23  | 
|24 | username24 |  name24  | 
|25 | username25 |  name25  | 
|26 | username26 |  name26  | 
|27 | username27 |  name27  | 
------------------------------------ 

__jb_plan_subscr TABLE :(user_id 22有兩個計劃)

------------------------------------ 
|id | user_id | plan_id | 
|----------------------------------- 
|1 | 22   |  1  | 
|2 | 22   |  2  | 
|3 | 23   |  1  | 
|4 | 24   |  1  | 
|5 | 25   |  1  | 
------------------------------------ 

查詢的結果是:

username22 
username24 
username25 
username22 
username23 

感謝

+0

歡迎來到stackoverflow。請包括你的願望輸出。你知道'user_id = 22'有兩個計劃,但不知道你想用哪一個。 –

+0

請忽略:AND $ bidderQuery AND $ ndaQuery –

+0

我忽略了這一點,但仍然需要知道你想要輸出什麼請更新你的問題,並讓我知道 –

回答

0

SQL Fiddle Demo

SELECT b.*, u.username, u.name, s.plan_id, s.user_id 
FROM (SELECT `user_id`, MAX(`plan_id`) `plan_id` 
     FROM __jb_plan_subscr 
     GROUP BY `user_id` 
    ) s 
INNER JOIN __jb_bid b 
    ON b.user_id = s.user_id 
INNER JOIN __jb_users u 
    ON b.user_id = u.id 
WHERE project_id = 1 
ORDER BY s.plan_id; 

輸出

| id | user_id | project_id | username | name | plan_id | user_id | 
|----|---------|------------|-----------|-------|---------|---------| 
| 2 |  24 |   1 | username3 | name3 |  1 |  24 | 
| 1 |  22 |   1 | username1 | name1 |  2 |  22 | 
+0

謝謝胡安卡洛斯Oropeza,但在你的輸出user_id = 24是重複的,這是我的問題 –

+0

重複,因爲我沒有過濾'project_id'如果你添加'WHERE project_id = 1'你得到你想要的結果 –

+0

我更新了答案 –