小さな内線電話番号リストを作成しています。
データベースには、people
テーブルとテーブルの 2 つのテーブルがありnumbers
ます。関係はone-to-many
それぞれです。
結果を 1 行に 1 人の人物を含む単一の HTML テーブルに表示したいのですが、複数の数字がある場合は、それらを単一の列に表示し、人の行に行スパンを追加して補正します。
さて、データベースから結果を取得するには、次のいずれかを実行できます。
(pseudocode)
SELECT id, name
FROM people
foreach result as row {
SELECT number
FROM numbers
WHERE numbers.person_id = row['id']
}
これは、すべてのユーザーを取得するために 1 つのクエリを実行していることを意味しますが、100 人のユーザーがいる場合は、各ユーザーの数を取得するために 100 の追加クエリを実行することになります。
代わりに、次のようにすることができます。
(pseudocode)
SELECT number, person_id
FROM numbers
SELECT id, name
FROM people
foreach people as person {
echo name
foreach numbers as number {
if (number.id = person.id) {
echo number
}
}
}
したがって、基本的にはまったく同じことを行っていますが、代わりに 2 つのクエリを実行してすべての結果を配列に取得し、配列をループしてテーブルをフォーマットしています。
どの方法を使用する必要がありますか、またはこれを行うためのより良い方法はありますか?