gpt4 book ai didi

php - 使用sql获取子项目?

转载 作者:行者123 更新时间:2023-11-29 02:31:40 25 4
gpt4 key购买 nike

我有三个表,

条目标签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 将其整理成正确的格式)?

最佳答案

我假设您的博客条目 ID 是 blog_entry_id...

要求:

SELECT b.title, t.entry_id, t.name, l.tag_id 
FROM blog_entries b
JOIN blog_tags t on t.entry_id = b.blog_entry_id
JOIN blog_entries_tags_link l on t.id = l.tag_id
ORDER BY b.date DESC, t.name ASC

PHP:

$result = array();
foreach ($entries as $entry) {

// Creates a new blog entry on the $result array
if (!isset($result[ $entry['entry_id'] ])) {
$blog_entry = array();
$blog_entry['id'] = $entry['entry_id'];
$blog_entry['title'] = $entry['title'];
$blog_entry['tags'] = array();
$result[ $entry['entry_id'] ] = $entry;
}

// Add a new tag
$tag = array();
$tag['id'] = $entry['tag_id'];
$tag['name'] = $entry['name'];
$result[ $entry['entry_id'] ]['tags'][] = $tag;

}

您可能注意到您从不使用 blog_entry_tags_link(我使用它只是因为我不知道您的列名)。

关于php - 使用sql获取子项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12334908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com