2012-09-29 22 views
0

我有我的表做歸一化:顯示的數據已超過1個相同DATAS

tb_1

=================================== 
| id | doc_name | title | author | 
=================================== 
| 1 | doc1  | title1 | author1| 
| |   |  | author2| 
| 2 | doc2  | title2 | author3| 
| |   |  | author4| 
=================================== 

成爲:

tb_a       tb_b 
=======================  ========================= 
|id_a|doc_name| title |  |id_b| doc_name| author | 
=======================  ========================= 
| 1 | doc1 | title1|  | 1 | title1 |author1 | 
| 2 | doc2 | title2|  | 2 | title1 |author2 | 
=======================  | 3 | title2 |author3 | 
           | 4 | title2 |author2 | 
           ========================= 

我想顯示如下結果:

doc1 title1 author1 author2

doc2 title2 author3 author4

下面的代碼:

$query = mysql_query(" SELECT tb_a.doc_name, tb_a.title, 
           tb_b.doc_name, tb_b.author 
         FROM tb_a 
         JOIN tb_b ON tb_a.doc_name = tb_b.doc_name "); 
while ($row = mysql_fetch_array($query)) { 
    $doc  = $row['doc_name']; 
    $title = $row['title']; 
    $author = $row['author']; 

    echo $doc; echo $title ; echo $author; 
} 

但結果是: doc1 title1 author1doc1 title1 author2 doc2 title2 author3doc2 title2 author4

請幫助我,非常感謝你:)

+0

不回答你的問題,而是一個側面建議:'tb_b'不應該包含'doc_name'列,因爲那是多餘的'tb_a'。該列應該替換爲'doc_id',它包含'tb_a'中相應行的'id_a'列。 – Barmar

回答

0

所以你正在嘗試擺動你的桌子。不知道你想如何輸出,但是你可以使用group_concat(),因爲你使用的是mysql。

看起來像

SELECT tb1.doc, tb1.title, group_concat(tb2.author) 
    FROM tb1 
    JOIN tb2 ON tb1.id = tb2.id 
GROUP BY tb1.doc, tb1.title 
0
SELECT tb_a.doc_name, tb_a.title, GROUP_CONCAT(tb_b.author) authors 
FROM tb_a 
JOIN tb_b ON tb_a.title = tb_b.doc_name 
GROUP BY tb_a.doc_name, tb_a.title