2013-10-12 53 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>