如何使用MySQL查询以正确的顺序显示我的详细信息?

时间:2011-11-24 03:51:06

标签: php mysql

我不知道如何查询mysql来显示我想要的模式。该表存储了客户的所有预订详情。客户可以多次预订多个活动。在第一阶段,我只想检查客户预订了哪个活动。如果customerA在事件ABC,事件XZY中预订,那么系统将只显示:

enter image description here

而不是列表如下所示 enter image description here

这是我的查询:

$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

如何为客户重复显示事件,我该怎么办?

流程是这样的,管理员会看到客户预订了哪个事件。 enter image description here

接下来,管理员点击查看详细信息,也可以看到客户在所选事件中预订了哪个展位。 enter image description here

最后,管理员点击查看展位详情,看客户预订展位的哪一天。 (假设活动展位将在14天内出租,客户可以选择预订的日期,第3天,最后几天或中间) enter image description here

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字段,但应该让您知道如何格式化它。确保按这些列订购查询!