简单的MYSQL查询

时间:2014-05-19 10:00:03

标签: php mysql

我试图了解如何进行特定的MYSQL查询,但无法弄明白。

我有一个名为开发人员的表和一个名为plots的表。所有这些图都有一个开发人员ID,它链接回开发人员表中的开发人员名称。

我试图输出开发者名称,然后输出该开发者下的所有图表编号。一旦完成了,我希望它再与可能存在的更多开发人员一起做同样的事情。

我尝试过使用连接,但只会打印:

开发者名称,地块编号, 开发者名称,地块编号, 开发者名称,地块编号,

我只需要显示一次开发者名称。但是我需要打印所有的情节编号。

我想在while循环中使用某种IF语句,如果开发人员名称与之前在上一循环中的名称相同,那么它就不会打印。但是我似乎无法弄清楚它是如何起作用的。

谢谢大家的帮助。

3 个答案:

答案 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"];
    }