我试图了解如何进行特定的MYSQL查询,但无法弄明白。
我有一个名为开发人员的表和一个名为plots的表。所有这些图都有一个开发人员ID,它链接回开发人员表中的开发人员名称。
我试图输出开发者名称,然后输出该开发者下的所有图表编号。一旦完成了,我希望它再与可能存在的更多开发人员一起做同样的事情。
我尝试过使用连接,但只会打印:
开发者名称,地块编号, 开发者名称,地块编号, 开发者名称,地块编号,
我只需要显示一次开发者名称。但是我需要打印所有的情节编号。
我想在while循环中使用某种IF语句,如果开发人员名称与之前在上一循环中的名称相同,那么它就不会打印。但是我似乎无法弄清楚它是如何起作用的。
谢谢大家的帮助。
答案 0 :(得分:0)
根据你的需要,它不会给你一个输出。但也许这可以胜任。
select developer_name, group_concat(plot_number SEPARATOR ',') from developer inner join plot on plot.developer_id = developer.developer_id group by developer_name
然后,您可以从结果集中爆出(使用逗号作为分隔符的PHP爆炸)plot_number列,以显示与开发人员对应的所有绘图编号。
答案 1 :(得分:0)
你可以分两步完成
1. to get developer name and id.
2. get all plots of that id
$sql1 = "SELECT developer_id, developer_name FROM developers ";
$res = mysqli_query($con, $sql1);
while($row = mysqli_fetch_array($res))
{
$developer_id = $row['developer_id'];
$developer_name = $row['developer_name'];
echo $developer_name;
$sql2 = "SELECT * FROM plots WHERE developer_id='$developer_id' ";
$res2 = mysqli_query($con, $sql2);
while($row2 = mysqli_fetch_array($res2))
{
echo $row2['plot_id'];
}
}
答案 2 :(得分:0)
使用左连接..
Select * From developers Left Join plots on developers.developerid=plots.developerid
因此,它将从表开发人员和每个开发人员中选择所有内容,它应该选择图表。
使用if条件检查开发者ID的最后结果是否等于当前结果。如果不是,请打印ID。
修改强> 以下是PHP程序的运行方式..
$strSQL = "Select * From developers Left Join plots on developers.developerid=plots.developerid";
$Result = mysql_query($strSQL);
$DevID = "";
while ($Fields = mysql_fetch_array($Result))
{
if ($Fields["developerid"] != $DevID)
{
echo $Fields["developerid"];
$DevID = $Fields["developerid"];
}
echo $Fields["plot_column"];
}