2013-05-02 56 views
0

我有一个查询SELECT id, title, imagename FROM cat JOIN images ON id=id 我想只回显每个类别的标题一次,然后3个图像。然后和下一个类别一样。每个ID的回显类别名称

表布局:

Cat Table 
id title 

Images Table 
id imagename 

最后的结果应该是这样的:

Title 

Imagename Imagename Imagename 

Title 

Imagename Imagename Imagename 

的查询使用的foreach循环为目标($this->results as $result) { echo $result->title; }等印刷..

而且我感兴趣的是如果有其他方式(查询?)获得相同的结果。

回答

0

你需要保持当前标题的轨道,只有呼应标题时,它是从当前不同:

$title = ''; 
// loop 
    ... 
    if ($result->title !== $title) 
    { 
    echo $result->title; 
    $title = $result->title; 
    } 
    ... 
// end loop 

请注意,你需要ORDER BY title在查询中,你可能会得到同样的如果你不这样做,稍后会再次标题。

+0

感谢您的回答。这看起来像一个工作方法,但我想知道是否有不同的方法(使用不同的查询或其他)? – user1876234 2013-05-02 14:21:03

+0

@ user1876234不,你不能直接从mysql获取树状结构。结果将永远是一个一维记录集。 – jeroen 2013-05-02 14:32:37

0

您可以添加一个变量,如$prevTitle,如果当前标题与前一个标题匹配,请不要回显它。这将确保只有新的标题才会被回显,并且只有一次。当然,这将意味着你的对象将不得不进行排序/按职称划分为了不具有像

TITLE1

TITLE1

标题2

TITLE1

结果

因为这会回应标题1两次。