2016-04-28 64 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

我更新了答案 –