【问题标题】:Show datas from tables that can have a same data in a column in the same table显示来自同一个表的列中可以具有相同数据的表中的数据
【发布时间】:2012-09-21 12:41:00
【问题描述】:

我从网上抓取了一些数据,然后直接将它们保存在数据库中,所以我得到了$title$url$author。但是,一个title$author 的数量可以多于1 个数据。所以,我将$author$title$url 分开。所有id 都是自动递增的。

tb_wrapper            tb_author
=================     ==================
|id| title | url|    |id|author|$title|
=================     ==================
|1 |titleA |urlA|    | 1| A    |titleA|
=================     | 2| B   |titleA|
                    ===================

在另一个过程中(从我得到的文件名与 $title 相同的文档文件中),我还有一个包含 $title 的表:tb_doc

======================
|id | content | title|
======================
|1  | contentA|titleA|
======================

我需要从这 3 个表中获取数据,所以我可以得到如下结果: titleA has URLA contentA and author A and B

代码如下:

$query = mysql_query("SELECT
                            tb_wrapper.url,
                            tb_wrapper.title,
                            tb_author.title,
                            tb_author.author,
                            tb_doc.content,
                            tb_doc.title
                       FROM
                            tb_doc
                       INNER JOIN tb_wrapper ON tb_doc.title = tb_wrapper.title
                       INNER JOIN tb_author ON tb_wrapper.title = tb_author.title ");

但是,我得到了重复的结果,作者 A 和 B 是分开的。请帮帮我,我需要做什么?非常感谢:)

【问题讨论】:

    标签: mysql sql group-by group-concat


    【解决方案1】:

    像这样使用GROUP_CONCAT

    SELECT w.url, w.title, a.title, a.authors, 
      d.content, d.title
    FROM tb_doc d
    INNER JOIN tb_wrapper w  ON d.title = w.title
    INNER JOIN
    (
       SELECT title, GROUP_CONCAT(author SEPARATOR ', ') AS authors
       FROM  tb_author
       GROUP BY title
     ) a ON w.title = a.title
    

    SQL Fiddle Demo

    【讨论】:

      猜你喜欢
      • 2012-04-27
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 2017-02-09
      • 2012-08-20
      相关资源
      最近更新 更多