0

我有一个查询SELECT id, title, imagename FROM cat JOIN images ON id=id ,我想每个类别只回显一次标题,然后回显 3 个图像。然后与下一个类别相同。

表格布局:

Cat Table
id title

Images Table
id imagename

最终结果应如下所示:

Title

Imagename Imagename Imagename

Title

Imagename Imagename Imagename

使用 foreach 循环作为对象打印查询($this->results as $result ) { echo $result->title; }等打印查询。

如果有其他方法(查询?)可以获得相同的结果,我也很感兴趣。

4

2 回答 2

0

您需要跟踪当前标题,并且仅在标题与当前标题不同时才回显标题:

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

请注意,您确实需要ORDER BY title在查询中添加,因为如果您不这样做,稍后可能会再次获得相同的标题。

于 2013-05-02T14:10:39.913 回答
0

您可以添加一个变量$prevTitle,如果当前标题与前一个标题匹配,则不要回显它。这将确保只有新标题会被回显,而且只有一次。当然,这意味着您的对象必须按标题排序/分组,以免产生类似的结果

标题1

标题1

标题2

标题1

因为这会重复标题 1 两次。

于 2013-05-02T14:11:41.423 回答