获取JOIN查询中每个匹配行的信息

时间:2013-11-12 15:14:33

标签: mysql group-by left-join

我有这个问题:

$sql = "SELECT a.id,b.*,c.* 
        FROM table1 a 
             left join table2 b on a.id=b.id1 
             left join table3 c on a.id = c.id2 
        WHERE b.field='name' and a.id=$id 
        GROUP BY c.id";

问题是从table3(或table c)我在该条件(a.id = c.id2)上有5个匹配行,而在最终结果中,我只有一个匹配行的信息。什么应该是我的GROUP BY子句,这样我才能从table c的所有5个匹配行中获取数据,而不仅仅是来自第一个匹配行的数据?

1 个答案:

答案 0 :(得分:0)

试试这个:

$sql = "SELECT a.id, b.*, c.* FROM table1 a 
   LEFT JOIN table2 b ON a.id=b.id1 
   LEFT JOIN table3 c ON a.id = c.id2 
   WHERE b.field='name' and a.id=$id 
   GROUP BY a.id, c.id";

它将对具有相同对的结果进行分组(a.id,c.id)。