左加入和组

时间:2014-05-06 20:26:01

标签: php mysql join group-by

这是我的表(table1):

id | code | tid | iid |
1  | xx   | 0   | 1   |
2  | xx   | 1   | 0   |

现在如果我做SQL

'SELECT * FROM 'table1' LEFT JOIN 'table_t' ON 'table_t'.'id' = 'table1'.'tid' LEFT JOIN 'table_i' ON 'table_t'.'id' = 'table1'.'iid' GROUP BY 'code'

现在,当我搜索代码' xxx'和LEFT JOIN另外2个表在这里,JOIN将加入' 0'来自tid,但我想加入' 1' (或只是最高的数字)。有没有人有一个好的(和快速)SQL?或者甚至可能吗?

我也做了一个非常简单的SQL谜语:http://sqlfiddle.com/#!2/d10bc6/1

我需要这样的东西:

SELECT * 
from jointable j 
left join tid_table t on t.id = MAX(j.tid) 
left join iid_table i on i.id = MAX(j.iid)
group by code

希望有人能提供帮助,我一直在寻找并尝试数小时。

编辑正如您在演示中所看到的那样,我得到了" null"对于tid_naam,这应该是tid-name

1 个答案:

答案 0 :(得分:2)

您正在使用group by但没有任何聚合函数,因此请使用MAX()这将解决问题以获得最高值的字段

select j.id,j.code,MAX(j.tid)tid,MAX(j.iid) iid ,
t.*,i.*
from jointable j 
left join tid_table t on t.id = j.tid 
left join iid_table i on i.id = j.iid
group by code

如果您要搜索代码,可以See search demo

Demo

其他方式,您可以使用基于列的最大值

的子选择
select j.id,j.code,MAX(j.tid)tid,MAX(j.iid) iid ,
t.*,i.*
from 
(SELECT id,code,MAX(tid)tid,MAX(iid) iid FROM jointable group by code)
 j 
left join tid_table t on t.id = j.tid 
left join iid_table i on i.id = j.iid
group by code

Demo