2013-10-12 88 views
0

提前感謝您的幫助!如何輸出JOIN查詢結果

我有一個DB有三個表,exp表,var表和val表。

EXP表
experimentid
字段1
場2
場3
等等

無功表
variableid
字段1
場2
˚F ield3
experimentid
等。

VAL表
VALUEID
字段1
場2
場3
variableid
等等

的表有一個1對多的關係,這意味着每個exp有許多變量,每個變量有許多vals。

所以我寫了一個查詢,將基於PK和FK加入表格。

SELECT experiments.experimentid, experiments.field1, variable.variableid, variable.field1, value.valueid, value.field1 
FROM exp table 
INNER JOIN var table 
ON variable.experimentid=experiments.experimentid 
INNER JOIN val table 
ON value.variableid=variable.variableid 

我的輸出看起來是這樣的(略)

Experimentid | field1 | variableid | field 1 | valueid | field 1 

1 | homepage | 1 | basket | 1 | true 
1 | homepage | 1 | basket | 2 | true 
1 | homepage | 2 | cart | 3 | false 

我的問題是,當我輸出的結果,我只是想顯示實驗FIELD1一次。例如,你會注意到我有3個結果,都與「主頁」相關聯。那麼,我只想要顯示一次主頁,但輸出該實驗的衆多變量和值。我怎樣才能做到這一點?我希望我的數據庫模式不會太神祕......信息有點敏感。

UPDATE:

我想我的輸出看起來像這樣(基於表的數據之上)。 本質上,我只希望主頁顯示一次,然後將變量ID和值ID輸出多次,因爲它們是相關的。不知怎的,我不能讓

<table> 
    <tr><td colspan=2>Homepage</td></tr> 
    <tr><td>Basket</td><td>cart</td></tr> 
    <tr><td>True</td><td>false</td></tr> 
    <tr><td>True</td><td>null</td></tr> 
    </table> 
+1

你說'例如,你會注意到我有3個結果,都與「主頁」相關聯。那麼,我只想要顯示一次主頁。爲此,你必須應用:'group by field1',那麼你將只有1個結果 –

+0

如果你關心它的外觀,你不應該只打印DB客戶端的輸出,而是寫一個格式化的應用程序。也許你可以告訴我們你如何想象輸出? – Szocske

+0

@Szocske剛剛用輸出更新了我的問題。讓我知道你是否希望我輸出從DB獲得的實際結果......這可能比我提供的縮寫示例更好。 – user2828701

回答

0

我用這個JavaScript函數,一旦加入/合併所有行,垂直相鄰,具有相同的價值:

<script> 
function joinRows() { 
    var table = document.getElementById("myTable"); 
    for (var i = table.rows.length-1; i>=0; i--) { 
     row = table.rows[i]; 
     for (var j = row.cells.length-1; j>=0 ; j--) { 
      col = row.cells[j]; 
      if(col.innerHTML==table.rows[i-1].cells[j].innerHTML) { 
       var addRows = table.rows[i].cells[j].rowSpan; 
       table.rows[i].deleteCell(j); 
       table.rows[i-1].cells[j].rowSpan = table.rows[i-1].cells[j].rowSpan + addRows; 
      } 
     } 
    } 
} 
</script> 

下面的HTML代碼來測試它:

<table id="myTable" border="1"> 
<tr> 
<td id="td.1.1">1.1</td> 
<td id="td.1.2">2.2</td> 
<td id="td.1.3">1.3</td> 
<td id="td.1.3">1.4</td> 
</tr> 
<tr> 
<td id="td.2.1">1.1</td> 
<td id="td.2.2">2.2</td> 
<td id="td.2.3">2.3</td> 
<td id="td.1.3">2.4</td> 
</tr> 
<tr> 
<td id="td.2.1">1.1</td> 
<td id="td.2.2">3.2</td> 
<td id="td.2.3">2.3</td> 
<td id="td.2.3">3.4</td> 
</tr> 
<tr> 
<td id="td.2.1">4.1</td> 
<td id="td.2.2">4.2</td> 
<td id="td.2.3">4.3</td> 
<td id="td.2.3">4.4</td> 
</tr> 
</table> 
<script> 
//joinRows(); 
</script> 
<br> 
<button type="button" onclick="joinRows()">join cells</button>