状況: 2つのテーブル、人名とその他のデータを格納している最初の人(Person)、電話番号を格納している2番目の(Phones)。 1人あたり複数の電話番号が存在する可能性があります(最初は別のテーブルを使用しています)。mysql最速2テーブルクエリ
目標:最後に私はこのようなPHPの配列を持っていると思いますように、すべてを選択します。
array
(
'0' => array
(
'name' => 'John Smith'
// other values from table Persons...
'Phones' => array('0' => '12345', '1' => '324343') // from Phones table
),
'1' => array
(
'name' => 'Adam Smith'
// other values from table Persons...
'Phones' => array('0' => '645646', '1' => '304957389', '2' => '9435798') // from Phones table
)
);
ETC.
Phones.person_id = Persons.id
何これを行うための最速の方法だろうか?プログラム実行時間の意味では最速であり、コーディング時間ではありません。私はシンプルなJOINを行うことができましたが、この場合は、電話機ごとに複数の重複した行が表示されます。つまり、私が何を意味するのかを見ても、同じ人のすべてのデータを繰り返し取得できます。だから私はPHP側で配列に取り組む必要があります。多分もっと良い方法がありますか?
これは、1つのSQLクエリを実行し、PHPで配列を並べ替えるよりも高速であることは間違いありません。 – chris
あなたの返事をありがとうございますが、それは100k + mySQLのクエリになるでしょう、それはひどく非効率です。 – Rick
あなたはそうです。私はJOINがうまくいくと思っています。そして、あなたはそのように結果を並べ替えることができます。結果を繰り返します。名前がバッファ配列にある場合は、その番号を追加します。そうでない場合は、名前をバッファに追加してから番号を追加します。 –