2

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

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

在另一个过程中(从我得到它们的文件名与 $title 相同的文档文件),我有一个表也包含$titletb_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 是分开的。请帮帮我,我必须做什么?非常感谢你 :)

4

1 回答 1

2

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 小提琴演示

于 2012-09-30T09:50:53.943 回答