【发布时间】:2012-09-02 07:53:59
【问题描述】:
我有三张桌子,
Entries、Tags、Entry_Tag_Link
我的查询通过并将所有内容从Entries 表中提取出来
SELECT *
FROM (`blog_entries`)
ORDER BY `date` desc
我最终得到了一个条目数组。
然后我循环遍历
foreach($entries as &$entry)
$entry['tags'] => getTags($entry['id]);
getTags 函数运行此查询
SELECT t.*
FROM blog_tags t
JOIN blog_entries_tags_link l
ON t.id = l.tag_id
WHERE l.entry_id = {whatever id was passed}
ORDER BY t.name asc;
所以我最终得到了一个如下所示的数组:
Array
(
[0] => Array
(
[id] => 1
[title] => First Title
[tags] => Array
(
[0] => Array
(
[id] => 1
[name] => t1
)
[1] => Array
(
[id] => 2
[name] => t2
)
)
)
[1] => Array
(
[id] => 2
[title] => Second Title
[tags] => Array
(
[0] => Array
(
[id] => 1
[name] => t1
)
[1] => Array
(
[id] => 3
[name] => t3
)
)
)
)
所以,这意味着如果有 200 个条目,我最终会得到 201 个查询, 我想知道是否有一种方法可以在一个查询中获取我需要的所有数据(然后假设使用 php 将其按摩成正确的格式)?
【问题讨论】:
-
也许可以尝试使用 l.entry_id IN (entry1, entry2....),这样你就不必一个一个地做,但所有这些都在一个查询中。
-
能否请您发布表格结构以及您的预期输出?
标签: php mysql arrays multidimensional-array