2014-11-03 54 views
0

我正在尋找在MySQL中的行集中的每一列獲得不同的行。這些樣本表: 系統表:mysql不同多列

jcn system 
1 server 
1 workstation 

問題表:

jcn issue 
1  "not working" 

範圍表:

jcn area 
1  102 
1  103 
1  104 

我想要得到的結果是:

system  area 
server  102 
workstation 103 
       104 

這可能嗎。我會使用2個查詢,但是我將它放在PHP中的表格中,並且希望表格以這種方式顯示。 結果總是:

system  area 
server  102 
server  103 
server  104 
workstation 102 
workstation 103 
workstation 104 

這個結果是使用

SELECT system, area FROM issues JOIN system USING (jcn) CROSS JOIN area USING (jcn) WHERE issues.jcn = 1 
+1

什麼是'jcn',爲什麼總是'1'? – 2014-11-03 17:52:28

+1

什麼讓102號與服務器而不是工作站?他們都有相同的ID。 – 2014-11-03 17:52:59

+0

jcn是問題表中的主鍵。它是所有問題的控制編號。有很多問題。這只是一個問題,這是「不起作用」。它影響的系統是工作站和服務器,它影響的區域是102,103和104.表看起來很亂,它的方式是 – 2014-11-03 17:55:26

回答

0

我不太清楚你試圖做...

似乎不就像你試圖「配對」系統和區域......在我看來,你似乎試圖爲「系統」和獨立的「區域」獲得所有可能的值。因此,如果這個假設是正確的,你可以在2個查詢中完成(一個選擇「DISTINCT(系統)」,另一個選擇「DISTINCT(區域)」)並在兩個不同的數組中提取它們。如果你希望將結果合併到1個數組中(例如你給出的例子),你可以使用array_combine(http://php.net/manual/en/function.array-combine.php)。

你也可以讓你真正擁有的查詢,並使用密鑰,以確保你得到了「獨特」的值在2點不同的陣列獲取結果:

$my_systems = array(); 
$my_area = array(); 
while ($row = $query->fetch()) { // or whatever method that lets you fetch your query row by row 
    $my_systems[$row['system']] = $row['system']; 
    $my_areas[$row['area']] = $row['area']; 
} 
$merged = array_combine(array_values($my_systems), array_values($my_areas)); // if you really need this in 1 merged array. 

請注意,只有這樣做1查詢會導致計數結果的行數(distinct(system))* count(distinct(area))。使用2個單獨的查詢可能更可取。

+0

謝謝,我不是試圖「結合」結果,但認爲這是可能的一個查詢。謝謝。 – 2014-11-03 18:28:28