Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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
Php 将多个表与一个表合并以生成更多结果_Php_Mysql_Join - Fatal编程技术网

Php 将多个表与一个表合并以生成更多结果

Php 将多个表与一个表合并以生成更多结果,php,mysql,join,Php,Mysql,Join,我有三张桌子: Info: | article_id | title | author | rating | num_comments | |------------|----------------|---------------------|------------|--------------| | 1 | a title | an author | 3.5 | 2

我有三张桌子:

Info:
| article_id | title          | author              | rating     | num_comments |
|------------|----------------|---------------------|------------|--------------|
| 1          | a title        | an author           | 3.5        | 2            |
| 2          | another title  | a different author  | 2          | 0            |


Articles:
| article_id | text             |
|------------|------------------|
| 1          | longish text...  |
| 2          | more text...     |


Comments:
|comment_id | article_id | name        | comment    | date_added |
|-----------|------------|-------------|------------|------------|
| 1         | 1          | this name   | first !    | 2013-10-25 |
| 2         | 1          | that name   | bla        | 2013-10-26 |
我可以从前两个数据库检索数据,而不会出现以下问题:

    SELECT Info.*, Articles.text 
    FROM Info
    JOIN Articles
    ON Info.article_id = Articles.article_id
    WHERE article_id = :article_id
但现在我想从第三个表中获取匹配的行,按日期排序,最好将它们输出到多维数组中。 一个查询就可以做到这一点吗

因此,
article_id=1
的预期结果应该如下所示:

    array { 
            [article_id] => 1,
            [title] => a title,
            [author] => an author,
            [rating] => 3.5,
            [num_comments] => 2,
            [text] => longish text...,
            [comments] => array {
                                  [1] => array {
                                                 [comment_id] => 1,
                                                 [name] => this name,
                                                 [comment] => first !,
                                                 [date_added] => 2013-10-25
                                  [2] => array {
                                                 [comment_id] => 2,
                                                 [name] => that name,
                                                 [comment] => bla,
                                                 [date_added] => 2013-10-26
                                                }
           }

只需添加另一个join语句并连接第三个表

只需添加另一个join语句并连接第三个表

只需添加另一个join语句并连接第三个表

即使您没有评论:

SELECT i.*, a.text, c.*
FROM Info i
INNER JOIN Articles a ON Info.article_id = Articles.article_id
LEFT JOIN Comments c ON c.article_id = a.article_id
WHERE a.artice_id = :article_id

即使您没有评论,也可以使用左连接从文章中获取结果:

SELECT i.*, a.text, c.*
FROM Info i
INNER JOIN Articles a ON Info.article_id = Articles.article_id
LEFT JOIN Comments c ON c.article_id = a.article_id
WHERE a.artice_id = :article_id

即使您没有评论,也可以使用左连接从文章中获取结果:

SELECT i.*, a.text, c.*
FROM Info i
INNER JOIN Articles a ON Info.article_id = Articles.article_id
LEFT JOIN Comments c ON c.article_id = a.article_id
WHERE a.artice_id = :article_id

即使您没有评论,也可以使用左连接从文章中获取结果:

SELECT i.*, a.text, c.*
FROM Info i
INNER JOIN Articles a ON Info.article_id = Articles.article_id
LEFT JOIN Comments c ON c.article_id = a.article_id
WHERE a.artice_id = :article_id
我还没有测试过这个

SELECT * FROM Articles
  JOIN Info ON Articles.id = Info.article_id
  JOIN Comments ON Info.article_id = Comments.article_id WHERE Comments.article_id = :article_id
我还没有测试过这个

SELECT * FROM Articles
  JOIN Info ON Articles.id = Info.article_id
  JOIN Comments ON Info.article_id = Comments.article_id WHERE Comments.article_id = :article_id
我还没有测试过这个

SELECT * FROM Articles
  JOIN Info ON Articles.id = Info.article_id
  JOIN Comments ON Info.article_id = Comments.article_id WHERE Comments.article_id = :article_id
我还没有测试过这个

SELECT * FROM Articles
  JOIN Info ON Articles.id = Info.article_id
  JOIN Comments ON Info.article_id = Comments.article_id WHERE Comments.article_id = :article_id

谢谢,但这不是每一条评论都会产生结果吗?我对我的问题进行了一些编辑,因为我认为我不清楚想要的结果。在一个查询中,这是最接近您想要达到的结果。谢谢,但这不会为每个评论产生结果吗?我对我的问题进行了一些编辑,因为我认为我不清楚想要的结果。在一个查询中,这是最接近您想要达到的结果。谢谢,但这不会为每个评论产生结果吗?我对我的问题进行了一些编辑,因为我认为我不清楚想要的结果。在一个查询中,这是最接近您想要达到的结果。谢谢,但这不会为每个评论产生结果吗?我编辑了一下我的问题,因为我想我不清楚想要的结果。在一个查询中,这是最接近你想要达到的结果。