2

次の構造のmySQLテーブルがあります

+-------------+------------------+------+-----+---------+----------------+
| Field       | Type             | Null | Key | Default | Extra          |
+-------------+------------------+------+-----+---------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| make        | varchar(55)      | NO   | MUL | NULL    |                |
| model       | varchar(55)      | NO   | MUL | NULL    |                |
| year        | varchar(4)       | NO   | MUL | NULL    |                |
+-------------+------------------+------+-----+---------+----------------+

そしていくつかのサンプルデータ

('Chevrolet', 'Express', '2001'),
('Chevrolet', 'Express', '2002'),
('Chevrolet', 'Venture', '2001'),
('Chevrolet', 'Venture', '2002'),
('Dodge', 'Dakota', '2000'),
('Dodge', 'Dakota', '2001'),
('Ford', 'Flex', '2009'),
('Ford', 'Flex', '2010'),

私が欲しいのは、すべてのモデルを、すべてのメーカーと製造年を付けて返すことができる 1 つの高速なクエリです。したがって、以下は私が返したいものの例です。

Array
(
    [Chevrolet] => Array
        (
            [Express] => Array
                (
                    [0] => 2001
                    [1] => 2002
                )

            [Venture] => Array
                (
                    [0] => 2001
                    [1] => 2002
                )
        )

    [Dodge] => Array
        (
            [Dakota] => Array
                (
                    [0] => 2001
                    [1] => 2002
                )
        )

    [Ford] => Array
        (
            [Flex] => Array
                (
                    [0] => 2009
                    [1] => 2010
                )
        )
)

私が現在していること:

すべての一意の make を返すクエリが 1 つあります。

$sql = "select distinct make from listings order by make asc ";

すべての make を取得したら、make を使用して次のクエリをループして実行します。

$sql = "select distinct model from listings where make = ? order by model asc ";

そして、私は年をつかむためにもう一歩行きます:

$sql = "select distinct year from listings where make=? and model=? order by year desc";
4

1 に答える 1

0
SELECT make, model, year
FROM listings
ORDER BY make, model, year
于 2013-04-23T06:05:44.493 に答える