但願這不是太主觀,但:如何合併和顯示數據從多個表
我有,我需要查詢從基於ID四種不同的表中的數據有問題。該數據具有相似但不相同的字段,需要爲每個表格顯示。本質上,如果我有表A,B,C,和d,則對於一個id N,I可能需要以下面的順序來顯示的行:
A1
B1
B2
B3
C1
D1
D2
D3
D4
然而,由於某些B和d的要求我加入許多表,並且我有成千上萬的記錄,我不想爲每個ID發送四個複雜的查詢。我正在預先構建數據 - 創建一個臨時表,其中包含每個最終的A,B,C,D數據,然後通過ID直接查詢這些行。有更快的方法嗎?我想過使用UNION,但我的行並不都具有相同種類的列(對於A類行,我可能需要顯示一個日期,而C類行將有一個整數日偏移量)。
我目前的做法:
foreach ($ids as $id) {
$a = "SELECT * FROM a JOIN xyz (...) WHERE id = ?";
$b = "SELECT * FROM b JOIN xyz (...) WHERE id = ?";
$c = "SELECT * FROM c JOIN xyz (...) WHERE id = ?";
$d = "SELECT * FROM d JOIN xyz (...) WHERE id = ?";
print query($a, $id)->fetch();
print query($b, $id)->fetchAll();
print query($c, $id)->fetch();
print query($d, $id)->fetchAll();
}
或者類似的東西
在代碼中顯示您的方法。另外,你使用哪個DBMS?我懷疑你有'mysql'' sql-server'和'postgresql'問題,同時解決了這個問題 –
固定。我使用postgres,但特定的DBMS與方法無關。 – grobolom
如果我理解正確,你可以查看'FULL JOIN',或者用'UNION'和'NULL'值查找你沒有列的查詢 –