バックグラウンド
私が mySQL n00b であるため、3 つのテーブルを一致させるために考え出すことができる最良のクエリは、2 つのテーブル間の比較を実行し、変数を出力し、その変数を使用して相互参照テーブルから最終的な出力を選択することです。その後、さらに別のクエリを実行して、3 番目のテーブルから出力します...
これで、1 つのステートメントだけで必要なすべての行を選択する方法があることがわかりましたが、私の人生では、それをつなぎ合わせることができません。誰かが私が必要とするクエリを正しく構造化するのを手伝ってくれませんか?
3 つのテーブルからの情報を使用して php で結果セットを出力し、2 つのテーブルの ID 間の実際のリンクとして別のテーブルを使用する必要があります。ありがとうございました!!
テーブル
name: table_one
-----------------------------------------------------------
id | user_id | o_id | num | likes | dislikes | .... | ... |
-----------------------------------------------------------
1 | 765 | 1 | 100 |android| cats |
2 | 765 | 2 | 100 | birds | mySQL queries |
3 | 765 | 3 | 100 | php | iPhones |
4 | 765 | 2 | 2 |oranges| bananas |
-----------------------------------------------------------
name: table_two
------------------------------------------------------------|
id |first_name| location | num_times | diploma | why |
------------------------------------------------------------|
1 | ABC | here | 0 | none | because |
2 | BCD | there | 5 | BS | no reason |
3 | Sally | nowhere | 194384 | DR | no reason |
4 | Jack | overthere| 3 | none | failure |
5 | Bob | Mars | 0 | random | in training |
-------------------------------------------------------------
name: table_agency |
---------------------------|
id | name | address |
---------------------------|
1 | A | 123x |
2 | B | 234y |
3 | C | 456z |
----------------------------
name: table_link
-----------------------------
rel_a | rel_b
---------------------------------
1 | 1 |
1 | 4 |
1 | 5 |
2 | 1 |
2 | 4 |
2 | 5 |
3 | 2 |
3 | 3 |
4 | 3 |
---------------------------------
出力/PHP
$results = $class->runQuery($query); //basically a fetchAll
foreach ($results as $result) {
echo id_table_one ($result['id']);
echo $result['name'];
echo $result['num'];
echo $result['likes'];
echo other_rows...basically table_one.*
echo all_first_names&num_times that correspond in the table link;
}
//ACTUAL Printout(echo doesn't have the ,'s):
//here should be the output:
-------------------------------------------------
1 | A | 100 | android | ABC-0/Jack-3/Bob-0|
2 | B | 100 | birds | ABC-0/Jack-3/Bob-0|
3 | C | 100 | php | BCD-5/Sally-194384|
4 | B | 2 | oranges | Sally-194384 |
----------------------------------------------
サイドノート
1) 名に関連付ける相互参照項目のエントリが少なくとも 1 つ、最大 7 つのエントリがあります (クエリである必要はありませんが、参照用です)。
2) 項目のエントリは 3 つだけです。table_agency
3) 結果セットは以下で修飾されなければなりません:user_id=".$variable
4)元のクエリ、多かれ少なかれ...しかし、取得しようとしている追加情報の間に共通性がないため、引き分けにする関数を作成することを余儀なくされました....これはアイデアを貸すはずです私が達成しようとしているものの:
$query = "select
a.*,
b.name,
b.id as agency_id
from table_one a, table_agency b
where a.agency_id = b.id
and a.user_id = ".$variable;
first_names
実際に対応するものが新たに追加されました$result['name']
5) ネストされた配列を使用して、 ???foreach(
のネストされた配列の最終結果セットを実際に出力できます。first_name
6) 質問(回答)にコメントを残してください。あなたの努力から学べます! 質問に答えてもらうだけではなく、手順と方法論についても学ぼうとしています。
7) 事前にすべてのご協力に感謝します...これは間違いなくヘッドスクラッチャーです. ありがとう!!!