2010-11-05 64 views
1

必须有一种方法才能使用1个查询。我使用的是加入和一组由帮助加入并加入群组

这里是我当前的代码假设:

$sql = mysql_query("select * from `databases` where `id` in (select `id_database` from `categories`)"); 

while ($row = mysql_fetch_assoc($sql)) 
{ 
    echo $row['name'] . '<br />'; 

    $sql_c = mysql_query("select * from `categories` where `id_database`='" . $row['id'] . "'"); 

    while ($row_c = mysql_fetch_assoc($sql_c)) 
    { 
     echo $row_c['title'] . '<br />'; 
    } 
} 

回答

1

有......这样的事情应该做的伎俩。

$sql = mysql_query("select * from databases db JOIN categories cat on (db.id=cat.id_database) ORDER BY db.name"); 

$last_name = null; 
while ($row = mysql_fetch_assoc($sql)) 
{ 
    if($row['db.name'] !== $previous_name) { 
     echo $row['db.name'] . '<br />'; 
     $previous_name = $row['db.name']; 
    } 
    echo $row['cat.title'] . '<br />'; 
} 
1
select d.name, c.title from databases as d, categories as c where d.id=c.id_database; 
+0

唯一的事情是我需要呼应数据库'name',然后在该数据库中的'categories'列表... – kevin 2010-11-05 13:07:39

+0

所以只是遍历结果集和呼应的名称只有当数据库与之前的数据库不同时才能访问数据库。就像李建议的那样...... – mitch 2010-11-05 23:19:34