2012-08-13 39 views
0

我想檢索父記錄,然後從MySQL DB中檢索該記錄在PHP中的匹配子記錄。mysql在php中的一對多查詢

ParentTable

ISN|ParentName|JoinedDate 
1 |John  |01-01-2010 
2 |Sam  |02-02-2010 
3 |Sheila |13-08-2012 

ChildTable

ISN|ChildName|JoinDate 
1 |Mary  |10-10-2010 
1 |Tamsin |11-10-2010 
3 |Kyle  |11-12-2010 

查詢結果應該是這樣的:

1|John |Parent|01-01-2010 
1|Mary |Child |10-10-2010 
1|Tamsin|Child |11-10-2010 
2|Sam |Parent|02-02-2010 
3|Sheila|Parent|13-08-2012 
3|Kyle |Child |11-12-2010 

我嘗試使用外連接和連接,使用臨時表結合起來,並查詢結果我似乎沒有找到正確的解決方法。我怎樣才能做到這一點?

+0

請閱讀關於簽名的常見問題部分:http://stackoverflow.com/faq#signatures – Tim 2012-08-13 13:40:58

回答

1

只需使用UNION即可將兩個表中的行組合起來。列名必須相同,這就是爲什麼我在child's表中使用alias的原因。

SELECT ISN, ParentName AS PersonName, 'Parent' AS `Status`, JoinedDate 
FROM parentTable 
UNION 
SELECT ISN, ChildName AS PersonName, 'Child' AS `Status`, JoinDate AS JoinedDate 
FROM childTable 
ORDER BY ISN, `Status` DESC 
0

使用「聯盟」

select ISN, ParentName, 'Parent' as 'Filiation', JoinedDate from ParentTable 

UNION 

select ISN, ChildName, 'Child' as 'Filiation', JoinDate from ChildTable 
0

使用以下查詢:

SELECT ISN, ParentName, 'Parent', JoinedDate 
UNION SELECT ISN, ChildName, 'Child', JoinDate` 

但它更好地節省約額外的字段類型的父母和孩子的單表數據(〔實施例:0 - 父母,1 - 孩子)。