2

Web からいくつかのデータをクロールし、それらをデータベースに直接保存したので$title、 、$url、および$author. ただし、1つあたりの数は$author複数のtitleデータが可能です。ということで、とを切り離し$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 に答える