查询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>”;
}

,或者你可能会爆炸$行[上市]用“”和一个

打印出来一个有这一个乐趣!

+0

谢谢。怪异的一个作品! – SomeRandomDude 2011-02-15 10:02:13

你有没有想过

select * from categories, listings 
where categories.id = listings.category_id 
order by categories.name, categories.id, listings.listing_title, listings.id 

则不必通过的电流类别是否在以前的类别相匹配的列表保持跟踪的PHP代码回路?