根据列中的数据分离MySQL SELECT语句

时间:2010-05-02 19:06:56

标签: php mysql

我需要从表格中的MySQL表中检索数据(在这种情况下是车辆详细信息),然后遍历结果以为每个类别的车辆生成单独的列表。有没有一种简单的方法可以做到这一点,而不必为每种类型的车辆都有一个SELECT语句?

如果我只针对一个类别执行此操作,我将使用以下内容:

<?php
$sql = "SELECT * FROM apparatus WHERE vehicleType = 'Support';
$getSQL = mysql_query($sql);
?>

<ul>
<?php while ($vehicleData = mysql_fetch_assoc($getSQL)) {?>
<li><?php echo $vehicleData['name'];?></li>
<?php } ?>
</ul>

...等。需要为四种不同类型的车辆执行此操作。

谢谢!

2 个答案:

答案 0 :(得分:4)

在Mark's Answer的基础上,您可以选择所有车辆,并在php中重新排列结果集:

<?php
  $sql = "SELECT * FROM apparatus ORDER BY vehicleType";
  $getSQL = mysql_query($sql);
  // transform the result set:
  $data = array();
  while ($row = mysql_fetch_assoc($getSQL)) {
    $data[$row['vehicleType']][] = $row;    
  }
?>
<?php foreach ($data as $type => $rows): ?>
  <h2><?php echo $type?></h2>
  <ul>
  <?php foreach ($rows as $vehicleData):?>
    <li><?php echo $vehicleData['name'];?></li>
  <?php endforeach ?>
  </ul>
<?php endforeach ?>

答案 1 :(得分:2)

你可以用这个:

SELECT * FROM apparatus
WHERE vehicleType IN ('foo', 'bar', 'baz', 'qux')
ORDER BY vehicleType

这将返回所有四种车型,很好地分组以便于迭代。如果您想要所有车辆类型,则不需要WHERE子句。