2011-05-25 37 views
2

我有以下查询返回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 
    , 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) 
    GROUP BY Table1.value 

但是,结果减少了74这是好,但我看不到任何东西在那些我heading..what可以做别的。

+0

你在看什么?你能提供更多信息吗?也许你期望的示例输出?我*想*你想要选择其他列上的某些聚合函数,如MAX()或SUM()。 – Dan 2011-05-25 00:33:47

回答

2

对不起,我把这个问题放在一个答案中,但至今我没有足够的代表发表评论。

我了解是你想怎么样让在关系表3(几行)的值一排表1:未经组

你相同的第一个查询通过和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>"; 
    } ... 

组通过将合并具有相同table1.value所有查询这不是什么你要。