【发布时间】:2015-03-21 19:05:04
【问题描述】:
我需要一些帮助来编写多对多数据库关系的 sql select 语句。
我在mysql中有table1、table2、table3,想用html输出底部的表。但是,关系结构让我感到困惑。你能帮我在正确的表格单元格中输出正确的兴趣吗?目前,我的 sql select 和 fetch 语句为每个用户生成一个包含多行的表,每个用户都有一个兴趣。
我已经尝试了所有我知道的连接和数组来正确输出。你能解释一下我做错了什么吗?我当前的代码如下所示:
$query = "SELECT *, table2.interest FROM table1
JOIN table3 ON table3.table1id = table1.id
JOIN table2 ON table3.table2id = table2.id
WHERE year=2017";
//Execute query
$qry_result = mysql_query($query) or die(mysql_error());
//Build Result String
$display_string = "<table border='1px'><tr><th>id</th><th>name</th> <th>string</th><th>year</th><th>interest</th></tr>";
$display_string .= "<tr><td>$row[id]</td><td>$row[name]</td> <td>$row[string]</td><td>$row[year]</td><td>$row[interests] </td></tr> </table>";
echo $display_string;
【问题讨论】:
-
如果您愿意,请考虑遵循以下简单的两步操作: 1. 如果您还没有这样做,请提供适当的 DDL(和/或 sqlfiddle),以便我们可以更轻松地复制问题。 2. 如果您尚未这样做,请提供与步骤 1 中提供的信息相对应的所需结果集。请注意,表 3 中的
id似乎是多余的。 -
你好像在找
GROUP_CONCAT -
我不会为此使用 GROUP_CONCAT。一个循环就足够了。
-
我可能会在 php 中进行演示;只需获取所有行,按用户排序,然后在循环遍历它们时对它们进行分组。这样也可以轻松更改演示文稿(例如添加兴趣链接)。