如何根据类别提取多条记录


How to fetch multiple records based on category

请给我解决这个问题的任何想法。

我有两张桌子

类别:

id。。。。类别母


1。。。。全体的0

2。。。。消息0

新闻:id。。。。大字标题category_id


1。。。。标题1。。。。1

2。。。。标题2。。。。2

3。。。。标题3。。。。2

4。。。。标题4。。。。1

我有这个MYSQL

代码:

SELECT * FROM news INNER JOIN categories ON news.category_id=categories.id group by category_id,date

现在我想根据类别获取行

所以我得到这样的结果:

一般类别:

标题1

标题4

新闻类别:

标题2

标题3

请帮我处理这些家伙

$getcategories = mysql_query("SELECT DISTINCT id FROM categories");
$categories = mysql_num_rows($getcategories);
if($categories > 0){
    echo "<table width='100%' cellspacing='0' cellpadding='0'>";
    while ($rowcategories = mysql_fetch_assoc($getcategories)) {
    $category_id = $rowcategories['id'];
    $category_title = $rowcategories['category'];
    $getnews = mysql_query("SELECT * FROM news WHERE category_id = '$category_id'");
    $news = mysql_num_rows($getnews);

        if($news > 0){
        echo "<tr><td>$category_title</td></tr>";
            while ($rownews = mysql_fetch_assoc($getnews)) {
            $news_headline = $rownews['headline'];
            // all other info you want to pull here
            echo "<tr><td>ROW WITH NEWS INFO HERE</td></tr>";
            } // end news loop
        } // end if news > 0
    echo "</table>";
    } // end if categories > 0
} // end categories loop
You dont need group by. You need **order by**.

请参阅我的mysql日志。

mysql> create table categories ( id int , category varchar(20), parent int);
Query OK, 0 rows affected (0.06 sec)
mysql> create table headlines ( id int, headline varchar(30), category_id int);
Query OK, 0 rows affected (0.05 sec)
mysql> insert into categories values (1, 'general', 0) , (2, 'news', 0);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0
mysql> insert into headlines values (1, 'headline1', 1), (2, 'headline2', 2), (3, 'headline3', 2), (4, 'headline4', 1);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select category ,  headline from headlines as h join categories as c on (c.id = h.category_id)  order by category, headline ;
+----------+-----------+
| category | headline  |
+----------+-----------+
| general  | headline1 |
| general  | headline4 |
| news     | headline2 |
| news     | headline3 |
+----------+-----------+
4 rows in set (0.00 sec)