共通の ID を持つ 2 つのテーブルからデータを取得する最も効率的な方法を誰かが見つけるのを手伝ってくれるかどうか疑問に思っていました。
簡単な例として、2 つのテーブルがあるとします。次のフィールドを持つ顧客とメッセージ:
顧客 - id、姓、名
メッセージ - customer_id、メッセージ
つまり、顧客テーブルには一意の ID を持つエントリが 1 つしかありませんが、メッセージ テーブルには顧客ごとに複数のメッセージが含まれる可能性があります。
PHP ページで、ページの上部に顧客名を表示し、次にその顧客のすべてのメッセージを表示したいと考えています。
現在、次の 2 つのクエリを使用しています。
$q1 = mysql_query("SELECT * FROM customers WHERE id='123'");
while($row1= mysql_fetch_assoc($q1)){
echo "$row1[firstname] $row1[surname]";
}
$q2 = mysql_query("SELECT * FROM messages WHERE customer_id='123'");
while($row2= mysql_fetch_assoc($q2)){
echo "$row2[message]";
}
これは私が達成しようとしていることの単純化されたバージョンですが、1 つのクエリでこれを行う方法があるかどうか疑問に思っていました。ここで検索するときに JOIN 関数と UNION 関数を見たことがありますが (ただし、使用したことはありません)、すべてのメッセージで顧客名を 1 回だけ表示する方法がわかりません。これらが 1 つのクエリからのもので、10 件のメッセージがあった場合、顧客名は 10 回繰り返されますか?
私がそこで完全に理解できたかどうかはわかりませんが、助けていただければ幸いです:)