【发布时间】:2015-11-27 07:25:02
【问题描述】:
我有以下表格:
Workers (id, total_pay, date_of_pay, projects_id)
Payments (id, payment, date, projects_id)
building_materials(id, pay_of_materials, date, projects_id)
additional(id, add_pay, date, projects_id)
其中 projects_id 是所有项目的外键。 我尝试进行查询以从 projects_id = projects_id 的所有表中选择所有日期,我现在有这个语句:
SELECT workers.date_of_pay, payments.date, building_materials.date, additional.date FROM
workers
INNER JOIN
payments ON workers.projects_id = payments.projects_id
INNER JOIN
building_materials ON payments.projects_id = building_materials.projects_id
INNER JOIN
additional ON building_materials.projects_id = additional.projects_id;
我到底想要什么,但无法弄清楚,是如何使用 GROUP BY 对每个字段进行分组,以及如何在一个下拉列表框中将所有列显示为一个? 我有这个列表框代码:
<select name="Date" required class="form-control" id="Date">
<option value="">اختر التاريخ</option>
<?php $sql=" SELECT workers.date_of_pay, payments.date, building_materials.date, additional.date FROM
workers
INNER JOIN
payments ON workers.projects_id = payments.projects_id
INNER JOIN
building_materials ON payments.projects_id = building_materials.projects_id
INNER JOIN
additional
ON
building_materials.projects_id = additional.projects_id AND additional.projects_id = ".$id;
$result = mysqli_query($con, $sql) or die($sql."<br/><br/>".mysql_error());
while($rows=mysqli_fetch_array($result)){?>
<option value="<?php echo $rows['date'] ?>"><?php echo $rows['date'] ?></option>
<?php } ?>
</select>
所以,稍后,我可以从下拉列表中选择一个日期并获取信息。 那么我如何分组,并将结果回显到下拉列表中。
编辑 使用 concat() 后:
SELECT concat(workers.date_of_pay, payments.date, building_materials.date, additional.date) AS date FROM
workers
INNER JOIN
payments ON workers.projects_id = payments.projects_id
INNER JOIN
building_materials ON payments.projects_id = building_materials.projects_id
INNER JOIN
additional ON building_materials.projects_id = additional.projects_id
我有这个:
但我希望每一行只有一个日期。
【问题讨论】:
-
您必须将不同的列合并为一列才能显示在一个下拉列表中。
-
怎么做,如何分组?
-
您可以使用 CONCAT() 函数将所有列连接为一个。由于您不使用任何聚合函数,因此您可以使用 ORDER BY 来按特定顺序对结果进行排序,而不是 GROUP BY。
-
先生,看看我的编辑,concat 将行的结果放在一起,我想要的是每个日期形成一行。查看已编辑的问题