我不知道如何查询mysql来显示我想要的模式。该表存储了客户的所有预订详情。客户可以多次预订多个活动。在第一阶段,我只想检查客户预订了哪个活动。如果customerA在事件ABC,事件XZY中预订,那么系统将只显示:
而不是列表如下所示
这是我的查询:
$query = "SELECT customer.companyName, customer.contactName, eventinfo.eventTitle,boothAlias,date, testbook.bstatus, testbook.day, testbook.username, bookingID from eventinfo, testbook, customer where testbook.username=customer.username AND testbook.eventID=eventinfo.eventID
如何为客户重复显示事件,我该怎么办?
流程是这样的,管理员会看到客户预订了哪个事件。
接下来,管理员点击查看详细信息,也可以看到客户在所选事件中预订了哪个展位。
最后,管理员点击查看展位详情,看客户预订展位的哪一天。 (假设活动展位将在14天内出租,客户可以选择预订的日期,第3天,最后几天或中间)
答案 0 :(得分:1)
您不能在数据库中。
您需要在显示应用程序中执行此操作。
数据库可以同时处理整个行。第二行中的数据不知道它之前的行中的任何内容,因此如果没有很多非常复杂的工作,就无法隐藏重复。
答案 1 :(得分:0)
SELECT customer.companyName, customer.contactName, GROUP_CONCAT(eventinfo.eventTitle )
from eventinfo, testbook, customer
where testbook.username=customer.username AND testbook.eventID=eventinfo.eventID
group by customer.companyName, customer.contactName
如果我理解你的问题,这将返回所需的列表,但事件将以逗号分隔
答案 2 :(得分:0)
你需要在PHP中这样做,就像Ariel所说的那样。像这样:
$current = '';
foreach($result as $row){
echo '<tr>'
if ($current != $row->companyName) {
$current = $row->companyName;
echo "<td>$row->companyName</td>";
}
else echo '<td></td>';
echo "<td>$row->contactName</td><td>$row->eventTitle</td>"; //etc...
echo '</tr>';
}
这仅适用于companyName字段,但应该让您知道如何格式化它。确保按这些列订购查询!