加入查询并分组以显示结果

问题描述

| 我有以下查询,返回9000条记录:
SELECT Table1.id,Table1.value,Table2.client_id,Table1.id_key,Table3.id,Table3.title
FROM Table1
LEFT JOIN Table2 ON Table2.id = Table1.Table2_id
LEFT JOIN Table3 ON Table1.id_key = Table3.id
WHERE Table2.orderType = \"Grace\"
AND Table2.id IN (7364)
由此,我需要创建一个标题为Table1.value的报告,然后将显示所有Table3.id,Table3.title 我试过了:
SELECT Table1.id,Table3.title
    FROM 
    Table1
    LEFT JOIN Table2 ON Table2.id = Table1.Table2_id
    LEFT JOIN Table3 ON Table1.id_key = Table3.id
    WHERE Table2.orderType = \"Grace\"
    AND Table2.id IN (7364)
    GROUP BY Table1.value
但这会将结果减少到74,可以,但是在这标题下我看不到其他任何内容。我该怎么办。     

解决方法

很抱歉将其回答,但截至目前我还没有足够的代表对此发表评论。 我的理解是,您正在尝试获取与表1中的一行相关的表3(几行)的值。 相同的第一个查询,没有分组依据,并按table1.value ASC,[在这里另一个顺序]添加顺序,然后在代码中仅显示标头,如果它是新的,则类似于
   $old_header=\"\"; //outside 
   while ($row=mysql_fetch_assoc($query)){
     if ($old_header!=$row[\'value\']){  //table1.value 
         $old_header=$row[\'value\'];
         echo \"<h1>Category: \".$old_header.\"</h1>\";
     } ...
group by将合并所有具有相同table1.value的查询,这不是您想要的。     ,通常,这是通过代码(而不是sql)完成的,但是GROUP_CONCAT可能有效。以逗号分隔列表的形式查看MySQL结果