2011-07-21 80 views
0

家庭餐桌顯示輸出的兩個表中

 
familynumber fistname lastname 
10001  A  B 
10002  C  D 
10003  E  F 
10004  G  H 

電話表

 
familynumber phonenumber description 
10001  111   mobile 
10001  222   home 
10001  333   text 
10002  444   text 
10003  555   work 
10003  666   mobile 

我需要輸出

 
familynumber phonenumbers 
10001  111, 222, 333 
10002  444 
10003  555, 666 

我知道它可以通過如下因素代碼

完成
$families = mysql_query("select * from family") 
while($family = mysql_fetch_assoc($families)) 
{ 
    extract($family); 
    echo "<td>$familynumber</td>"; 
    echo "<td>"; 
    $phones = mysql_query("select * from phone where familynumber = '$familynumber'"); 
    while($phone = mysql_fetch_assoc($phones)) 
    { 
     extract($phone); 
     echo $phonenumber . ", "; 
    } 
    echo "</td>"; 

} 

但我需要在一個SQL查詢中輸出。

+0

請看group_concat http://mahmudahsan.wordpress.com/2008/08/27/mysql-the-group_concat-function/ –

回答

0
SELECT f.familynumber, GROUP_CONCAT(p.phonenumbers) AS numbers 
FROM familytable f, phonetable p 
WHERE f.familynumber = p.familynumber 
GROUP BY familynumber 

GROUP_CONCAT

0

好了,你可以隨時使用左連接。這可能是你在找什麼 類似: SELECT * FROM family LEFT JOIN phone ON family.familynumber=phone.familynumber

注:這將返回一整行的每個電話號碼類型(因此,如果一個家庭有3個電話號碼,它會返回家庭信息3倍)。

更多關於左聯接:http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php

注意,也有右連接和內連接。你應該學習,並記住這些,它們是可有可無的。當你對它們變得更好時,查看優化連接。有一些很棒的文章,可以爲你節省寶貴的時間。

2

使用GROUP_CONCAT功能

SELECT p.familynumber, 
GROUP_CONCAT(DISTINCT p.phonenumber ORDER BY p.phonenumber SEPARATOR ",") 
AS phonenumbers 
FROM phone p LEFT JOIN family f ON p.familynumber = f.familynumber 
GROUP BY familynumber 
+0

我還需要家庭表字段 – Sureshkumar

+0

確定所以你需要添加連接,我更新答案 –

0

SELECT familynumber,PHONENUMBERS家人AS FML INNER JOIN手機作爲pH值對fml.familynumber = ph.familynumber GROUP BY ph.familynumber

我不知道,但這個可能會幫助你或讓你處於更好的位置