查询MySQL表格一次以获取所有类别的所有列表
**categories** mysql table
id|category_name
**listings** mysql table
id|listing_title|category_id
我想列出1个单一/相同PHP页面上的所有类别,并在每个类别下方显示所有列表。我该如何通过查询列表表一次来做到这一点。我可以通过在类别循环中做一个单独的查询来做到这一点,但那会比我猜测的更有必要。查询MySQL表格一次以获取所有类别的所有列表
//query listings table once
$sql = mysql_query("SELECT * FROM listings", $conn);
//loop through all categories
$sql = mysql_query("SELECT * FROM categories ORDER BY catname", $conn);
while($row= mysql_fetch_array($sql, MYSQL_ASSOC)){
//print category name
print"$row[catname]";
//print listings of category
}
下面是一个简单的(类别名称,人数)
$ sql_code =“SELECT C.category_name cat_name,FROM C类L.listing_title列表,列表L,其中C.id = L.category_id ORDER BY C.分类名称”;
$ next_catname =“”;
而($行= mysql_fetch_array($ SQL,MYSQL_ASSOC)){
如果(的strcmp($ next_catname,$行[catname])< 0)
{
如果(strlen的($ next_catname)> 0 )
{print“< \”>:}
print“Category:”。 $ row [catname]。 “< \”;“
} print“$ row [catname]:$ row [listings] < \”>; }
这是一个奇特的一个(类别名称随着人数的逗号分隔的列表)
$ sql_code =“SELECT C.category_name cat_name,GROUP_CONCAT(L.listing_title)上市FROM类别C,上市大号WHERE C.id = L.category_id GROUP BY C.category_name“;
$ sql = mysql_query($ sql_code,$ conn);
而($行= mysql_fetch_array($ SQL,MYSQL_ASSOC)){
打印 “分类:$行[catname] < \ BR>编目:$行[表] < \ BR> < \ BR>”;
}
,或者你可能会爆炸$行[上市]用“”和一个
打印出来一个有这一个乐趣!
你有没有想过
select * from categories, listings
where categories.id = listings.category_id
order by categories.name, categories.id, listings.listing_title, listings.id
则不必通过的电流类别是否在以前的类别相匹配的列表保持跟踪的PHP代码回路?
谢谢。怪异的一个作品! – SomeRandomDude 2011-02-15 10:02:13