2010-02-04 62 views
3

我有一個網站在多個表中存儲<select>選項,並根據單個頁面提取所有相關的選項。目前,我結束了這樣一個查詢:SELECT foo FROM foo_tbl;SELECT bar FROM bar_tbl;etc。這不是一個真正的問題,但我必須逐個遍歷每個選擇結果。在MySQL中加入多個不相關的表格

我想他們都提取到一個單一的網格,然後像做

if $row['foo'] != NULL { add to the foo options } 
if $row['bar'] != NULL { add to the bar options } 
etc 

如果我使用像SELECT DISTINCT f.foo, b.bar FROM foo_tbl AS f, bar_tbl AS b查詢,我風與行的每一個可能的組合(第一FOO第一第一條第二條,第二條第一條,第二條第二條等等)。

有沒有辦法做這樣的選擇,只有一個列中的每個元素的實例,並用空值填充列中的其餘行?

+1

您建議的解決方案很糟糕,尤其是如果每種類型的選項數量不同。您應該運行多個查詢,或者返回一個結果UNIONed,其中5.5年後的[Type,Value] – gahooa

回答

8

你可以做類似如下: 假設表foo有一個,b,c和表欄已列d欄,E,F

Select 'isFOO', a, b, c, null, null, null from foo 
Union All 
Select 'isBAR',null, null, null, d, e, f from bar 
+0

** NICE ** ...現在如果第一個參數顯示數據來自哪個表,那麼monksp的請求將被回答!我已經將其添加到您的答案中,如果您不喜歡,請隨時回滾! – lexu

+0

諾諾好編輯我說:) – keith

+0

這很完美!非常感謝,你們倆。 – monksp

8

有你使用工會

select foo as "f1" from footable where ..whatever.. 
union 
select bar as "f1" from bartable where ..whatever.. 

這將給你一個結果集考慮..但如果表是真正沒有任何關係。這仍然不會幫助你多少..

+1

列仍然有幫助。謝謝。 – Johnrad

1

也許是這樣的:

(從那裏,其中選擇一個,NULL,NULL, '2' 號....)(選擇A,B,C, '1' 從在那裏有....數) UNION UNION (從中選擇a,b,null,'3'作爲編號......) 按編號排序