我有一个MySql表,我想按类型列出内容并插入标题。我会使用什么类型的查询?
来自:
| Fluffy | Harold | cat | f | 1993-02-04 | NULL |
| Claws | Gwen | cat | m | 1994-03-17 | NULL |
| Buffy | Harold | dog | f | 1989-05-13 | NULL |
| Fang | Benny | dog | m | 1990-08-27 | NULL |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | NULL |
| Whistler | Gwen | bird | f | 1997-12-09 | NULL |
| Slim | Benny | snake | m | 1996-04-29 | NULL |
| Dalli | Alli | canine | m | 2001-12-20 | NULL |
| Tara | David | canine | f | 2002-05-17 | NULL |
| Mimi | Alli | guinea pig | m | 2004-05-17 | NULL |
对此:
<h2>Cat</h2>
<ul>
<li>Fluffy</li>
<li>Claws</li>
</ul>
<h2>Dog</h2>
<li>Buffy</li>
<li>Fang</li>
<li>Bowser</li>
</ul>
等
答案 0 :(得分:0)
您的第一个查询是:
SELECT DISTINCT type FROM table ORDER BY type ASC
使用您的PHP,我相信您可以从此查询中获取结果并循环遍历它。接下来是在循环中放入另一个查询,该循环为您提供属于当前类型的动物列表:
SELECT name FROM table WHERE type='$type' ORDER BY name ASC
$type
只是保持当前类型的变量。我假设了列名和表名,所以请更改它以适合您的代码。
答案 1 :(得分:0)
不要尝试用SQL做所有这些(只做标准的选择查询),使用PHP对结果进行分组,然后呈现它。这样做的最好方法是让一个对象为你做分组,因为你可能不止一次需要它。例如,您的课程可能如下所示:
<?php
class Arrays
{
public static function group($array,$key)
{
if(NULL == $array)
return NULL;
$grouped = NULL;
foreach($array as $item)
{
$grouped[$item[$key]][] = $item;
}
return $grouped;
}
}
?>
您的用例可能类似于:
<?php
$result = ...; // The result of your database query.
$grouped_by_type = Arrays::group($result,"type");
foreach($grouped_by_type as $type => $group)
{
echo "<h2>".ucwords($type)."</h2>";
echo "<ul>";
foreach($group as $animal)
{
echo "<li>".$animal['first_name']."</li>"; // Assumes the query brought back first_name...
}
echo "</ul>";
}
?>