次のようなテーブルがあります。
id title year
---------------
1 abc 1999
2 abc 2000
3 abc 2000
4 abc 1998
5 bce 1999
6 bce 1999
7 def 1999
8 def 1999
9 def 2000
次のような配列を取得しようとしています
array('abc' => 'array(1999,2000,1998)', 'bce' => 'array(1999)', 'def' => 'array(1999, 2000)');
私は長い道のりを知っており、時間のかかる方法だと思います:
PHP:
$rid = mysql_query("SELECT DISTINCT title from table_name ORDER BY ASC);
while($arr = mysql_fetch_array($qr)){
$title = $arr
$rid = mysql_query("SELECT DISTINCT title from table_name ORDER BY ASC);
$yearArr = array();
while($arr2 = mysql_fetch_array($qr)){
$yearArr[] = $arr2['year'];
}
$finalArr = array(title => $yearArr);
}
最後に、探していた配列を取得していますが、上記のコードから、1000 個の個別のタイトルがある場合、プロセス全体で 1001 個のクエリが実行されます。これを行う短い方法はありますか?
同様のものも1つ見つけましたが、それ以上進むことができませんでした:
SELECT DISTINCT year,title FROM table_name WHERE title IN (SELECT DISTINCT title FROM papers_scanned_01) ORDER BY title ASC, year DESC
上記のクエリを使用して、以下のように配列を取得しています
array( [0] => 'abc', [1] => '1999', [2] => '2000', [3] => '1998', [4] => 'bce' and so on..