问题描述
|
我有以下查询,返回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结果