【发布时间】:2020-11-06 02:21:57
【问题描述】:
我在一个表单中有两个查询。我打印出这样的结果:
<table>
<thead>
<tr>
<th>Heading1</th>
<th>Heading2</th>
<th>Heading3</th>
<th>Heading4</th>
</tr>
</thead>
<tbody>
<?php foreach ($result1 as $row1) : ?>
<tr>
<td><?php echo escape($row1["Column1"]); ?></td>
<td><?php echo escape($row1["Column2"]); ?></td>
<td><?php echo escape($row1["Column3"]); ?></td>
<?php endforeach; ?> </tr>
<tr> <?php foreach ($result2 as $row2) : ?>
<td><?php echo escape($row2["Column4"]); ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
我想在不同的列中显示每个结果。但是第二个查询(“Column4”)的结果似乎出现在第二个表(??)中。它没有在其他列旁边回显,而是在下面: Current Output
我该如何解决这个问题?
【问题讨论】:
-
query2 中有多少行对应于 query1 中的每一行?让我感到震惊的是,可以组合查询,这会使事情变得更清楚,尽管如果没有看到查询就无法确定。
-
$sql1 = "SELECT * FROM table1 LEFT JOIN table2 ON table1.SubTerm = table2.name"; $sql2 = "SELECT * FROM table1 LEFT JOIN table2 ON table1.GenericTerm = table2.name";他们都在查询相同的表,但连接方式不同。 Table1 仅由 ID 组成(因为两列都是同一个表的外键),Table2 包含 ID 的相应名称。
-
那么,为什么不将两个 JOIN 放在同一个查询中呢? “select * from table1 left join table2 on table1.subterm = table2.name left join table2 on table1.genericterm = table2.name”或类似的东西。我希望你加入 table2.id 而不是 table2.name,但我不知道你的列名。