0

提前感谢任何帮助!

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

exp 表
实验
ID
字段1 字段 2
字段 3
等...

var table
variableid
field1
field2
field3 Experimentid

val table
valueid
field1
field2
field3
variableid
等...

这些表具有一对多的关系,这意味着每个 exp 有许多 var,每个 var 有许多 val。

所以我写了一个查询,它将基于 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 个结果,都与“主页”相关联。好吧,我只希望主页显示一次,但输出该实验的众多变量和值。我怎样才能做到这一点?我希望我的数据库架构不会太神秘......信息有点敏感。

更新:

我希望我的输出看起来像这样(基于上面的表格数据)。本质上,我只希望主页显示一次,然后输出相关的变量 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>
4

1 回答 1

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>
于 2013-10-15T14:55:08.623 回答