gpt4 book ai didi

mysql - 从3个表一对多选择sql

转载 作者:行者123 更新时间:2023-11-30 00:17:12 26 4
gpt4 key购买 nike

大家好,我有一个问题,我的数据库有 3 个表

tags(id,name);

articles(id,title,smallimage,date,views);

tags_in_news(id,news_id,tag_id);

现在我希望所有的article.titles都附加到一个标签上。
我尝试过这个但没有多大帮助:我的功能:

public function get($obj_id)
{
$this->load->database();
$news = $this->db->query("SELECT
t.name,
t.id,
a.title,
a.date,
a.views,
a.smallimage,
tin.id,
group_concat(a.title)
from tags_in_news tin
inner join tags t on t.id = tin.tag_id
inner join articles a on a.id = tin.news_id
and t.id = ?
group by t.id",array($obj_id));
if ($news->num_rows())
{
$news = $news->result_array();
}
else
{
$news = NULL;
}

return $news;
}
Array
(
[0] => Array
(
[name] => new tag
[id] => 57
[group_concat(a.title,a.views)] => Article1 52,Article3 51,Article3 56
)

)

最佳答案

附加到标签的所有文章:

SELECT 
t.name tag,GROUP_CONCAT(DISTINCT a.title) titles
FROM tags_in_news tin
INNER JOIN tags t ON t.id = tin.tag_id
INNER JOIN articles a ON a.id = tin.news_id
GROUP BY t.id;

这里需要注意的一件事是 GROUP_CONCAT 允许的默认长度是 1024 个字符。
因此,建议以逗号分隔值的形式获取 ids(如果您怀疑您的连接值可能超出限制),一旦获得 ids,您就可以随后进行点查询。

关于mysql - 从3个表一对多选择sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23559431/

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