Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择表中行对应的所有数据(SQL)_Mysql_Sql - Fatal编程技术网

Mysql 选择表中行对应的所有数据(SQL)

Mysql 选择表中行对应的所有数据(SQL),mysql,sql,Mysql,Sql,编辑:使用MySQL 在这个例子中,我有一个Posts表、一个Users表、一个taged_Posts表和一个Tags表 Posts表具有对应于Users表和id列的user_id外键 taged_posts表有两个外键,一个用于tag_id,另一个用于post_id Tags表只有一个id和一个slug 我正在尝试查询帖子,并返回与该帖子相关的所有数据,即帖子数据、发布帖子的用户数据以及属于该帖子的标签 一篇文章可以有很多标签 这是我正在使用的SQL查询: $sql = "SELECT pos

编辑:使用MySQL

在这个例子中,我有一个Posts表、一个Users表、一个taged_Posts表和一个Tags表

Posts表具有对应于Users表和id列的user_id外键

taged_posts表有两个外键,一个用于tag_id,另一个用于post_id

Tags表只有一个id和一个slug

我正在尝试查询帖子,并返回与该帖子相关的所有数据,即帖子数据、发布帖子的用户数据以及属于该帖子的标签

一篇文章可以有很多标签

这是我正在使用的SQL查询:

$sql = "SELECT posts.title, users.name, users.handle, users.email, tags.slug as tags
from posts 
INNER JOIN users ON posts.user_id = users.id
INNER JOIN tagged_posts ON posts.id = tagged_posts.post_id
INNER JOIN tags ON tagged_posts.tag_id = tags.id";
由于此特定帖子有3个与之关联的标记,因此查询将返回同一帖子3次,并为标记列出不同的值。见下文:

Array
(
    [0] => Array
        (
            [title] => This is my first Post!
            [name] => exampleuser
            [handle] => example
            [email] => example@gmail.com
            [tags] => database-design
        )

    [1] => Array
        (
            [title] => This is my first Post!
            [name] => exampleuser
            [handle] => example
            [email] => example@gmail.com
            [tags] => sql
        )

    [2] => Array
        (
            [title] => This is my first Post!
            [name] => exampleuser
            [handle] => example
            [email] => example@gmail.com
            [tags] => php
        )

)

我能做一个查询并获得与帖子相关的所有内容吗?

您想将结果连接在一起。例如,在MySQL中,您可以执行以下操作:

select p.title, u.name, u.handle, u.email, group_concat(t.slug) as tags
from posts p join
     users u 
     on p.user_id = u.id join
     tagged_posts tp
     on p.id = tp.post_id join
     tags t
     on tp.tag_id = t.id
group by p.title, u.name, u.handle, u.email;

您使用的是什么数据库?MySQL。谢谢,我会在我的问题中加上这一点。实际上,我刚刚遇到了一个与concat小组的问题。如果我有多篇帖子,它将只显示一篇帖子,并将所有标签添加到一起,即使它们不属于该帖子id。你想让我编辑我的问题吗?哦,你是对的……我不确定第一次发生了什么。事实上,它确实按预期的那样工作。再次感谢你,如果你有时间,还有一个问题与此相关: