Mysql 从数据库中获取文章以及连接标签的最佳方法
我想从MySQL数据库中获取文章和它们连接到的所有标记名。我的SQL代码:Mysql 从数据库中获取文章以及连接标签的最佳方法,mysql,sql,Mysql,Sql,我想从MySQL数据库中获取文章和它们连接到的所有标记名。我的SQL代码: CREATE TABLE articles ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) CREATE TABLE tags ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, name VARCHAR(25) NOT NULL, PRIMARY KEY (id) )
CREATE TABLE articles (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (id)
)
CREATE TABLE tags (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(25) NOT NULL,
PRIMARY KEY (id)
)
CREATE TABLE connections (
art_id INT UNSIGNED NOT NULL,
tag_id INT UNSIGNED NOT NULL
);
我应该执行多个查询还是进行单个大查询?我怎样才能做到?我试着和JOIN一起玩,但似乎不能那样做
另外,我一直在搜索,但没有确切的问题。试试这个
select a.(*),t.name from articles a
inner join connection c on a.id=c.art_id
inner join tags t on c.tag_id=t.id
此查询将在每篇文章中返回1行,并将所有已连接标记的名称返回为a(如果没有已连接的标记,则返回null)。您已经有了一个很好的开始,但这里有一些事情可以优化 我们还假设您的文章表有一个ID和一个标题字段(只是为了给这个查询添加一些香料) 简单回答您的问题:
Select a.ID "ID", a."Title" "Title", t.Name "Tag_Name"
From connections c
Left Join article a
on a.id = c.art_id
Left Join tags t
on t.id = c.tag_id
-- If you want to filter on a certain article ID
WHERE a.id = @SomeArticleParam
我真的建议优化这些表的几件事:
SELECT articles.*,tags.* FROM articles , tags,connections
where tags.id=connections.tag_id and articles.id=connections.art_id
Select a.ID "ID", a."Title" "Title", t.Name "Tag_Name"
From connections c
Left Join article a
on a.id = c.art_id
Left Join tags t
on t.id = c.tag_id
-- If you want to filter on a certain article ID
WHERE a.id = @SomeArticleParam