如何从JOIN查询输出结果

时间:2013-10-12 15:30:13

标签: php html sql join inner-join

提前感谢任何帮助!

我有一个包含三个表的数据库,exp表,var表和val表。

exp table
experimentid
FIELD1
域2
字段3
等...

var table
变量 FIELD1
域2
字段3
experimentid
等。

val表
有价值的 FIELD1
域2
field3
variableid
等...

这些表具有1对多的关系,这意味着每个exp有很多变量,每个变量有很多变量。

所以我编写了一个基于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

我的问题是当我输出结果时,我只想显示实验字段1一次。例如,您会注意到我有3个结果,都与“主页”相关联。好吧,我只希望主页显示一次,但输出该实验的众多变量和值。我怎么能做到这一点?我希望我对我的数据库架构并不太神秘......信息有点敏感。

更新

我希望我的输出看起来像这样(基于上面的表数据)。 基本上,我只希望主页显示一次,然后将variableid和valueid输出相关的次数。不知怎的,我无法得到

  <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 个答案:

答案 0 :(得分: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>