3

テーブルの結果をブランド別にグループ化し、他の列で並べ替える必要がある場合があります。

配列からブランドを取得します。問題は、ブランド別にグループ化すると、このグループが ID (グループ内) でソートされることです。グループ内で並べ替える (並べ替える) 方法はありますか?

これが私の配列とmysqlクエリです。

$laptop_brands = array("Acer", "Apple", "Dell", "HP-Compaq", "IBM-Lenovo", "Sony", "Toshiba", "ASUS", "Fujitsu", "Gateway");

$get_videos_query = "SELECT * FROM users_video WHERE location = 'location_1' AND brand IN ('" . implode("','", $laptop_brands) . '\') GROUP BY brand ORDER BY FIELD (brand, "Acer", "Apple", "Dell", "HP-Compaq", "IBM-Lenovo", "Sony", "Toshiba", "ASUS", "Fujitsu", "Gateway"), official DESC';
4

2 に答える 2

0

SELECT * FROM (SELECT * FROM users_video WHERE location = 'location_1' AND brand IN ('" . implode("','", > $laptop_brands) . '\') GROUP BY brand ) AS P ORDER BY FIELD (brand, "Acer"、"Apple"、"Dell"、"HP-Compaq"、"IBM-Lenovo"、"Sony"、>"Toshiba"、"ASUS"、"Fujitsu"、"Gateway")、公式 DESC

結果から選択して注文できます

于 2012-08-05T12:14:12.097 に答える
0

私は解決策を見つけました。メモとアイデアをありがとう。

したがって、これは正しい結果を得るために使用したクエリです。

$laptop_brands = array("Acer", "Apple", "Dell", "HP-Compaq", "IBM-Lenovo", "Sony", "Toshiba", "ASUS", "Fujitsu", "Gateway");


$query = "SELECT * FROM (SELECT * FROM users_video WHERE location = 'location_1' AND brand  IN ('" . implode("','", $laptop_brands) . '\') ORDER BY official DESC) as my_table_tmp GROUP BY brand ORDER BY FIELD (brand, "Acer", "Apple", "Dell", "HP-Compaq", "IBM-Lenovo", "Sony", "Toshiba", "ASUS", "Fujitsu", "Gateway")';

特にmorteza kavakebiに感謝します

于 2012-08-06T01:10:49.453 に答える