0

ここでSQL初心者。私のテーブルは次のようなものです:

メインテーブル

+-----------+-------------+
| talent_id | talent_name |
+-----------+-------------+
|         1 | Talent1     |
|         2 | Talent2     |
|         3 | Talent3     |
+-----------+-------------+

教育表

+-----------+-----------+-----------------------------+
| talent_id |   level   |           course            |
+-----------+-----------+-----------------------------+
|         1 | Post-Grad | Master in Something         |
|         1 | Post-Grad | Doctor in Something         |
|         1 | College   | BS Something Engineering    |
|         2 | College   | BS Something Science        |
|         2 | Post-Grad | Master in Something Science |
|         3 | College   | BS Computer Something       |
+-----------+-----------+-----------------------------+

2 つのテーブルの列を 1 つのクエリで結合することはできますか? 私は別々のクエリを作成しようとしましたが (ちなみに、うまくいきました)、これら 2 つを配列に組み合わせるのに苦労しています。個別のクエリを使用する方が良い解決策である場合に備えて、2 つの配列結果を反復処理し、次のように結合する方法を教えてください。

Array( [0] => Array(
             'talent_id' => '1', 
             'talent_name' => 'Talent1', 
             'course' => Array('Master in something', 'Doctor in something', 'BS Something')),
       [1] => Array('talent_id' => '2', ...) )

Stack Overflow は、インターンシップの開始以来、私にとって大きな助けとなっています。そして、皆さんに感謝したいと思います。

4

5 に答える 5

3

クエリで左結合を使用する必要があります。

SELECT m.talent_id,m.talent_name,e.level,e.course
FROM main AS m 
LEFT JOIN education AS e ON m.talent_id =  e.talent_id
于 2013-05-24T09:45:00.257 に答える
0

最初に、才能 (ID でインデックス化) と教育を選択します。ここでは、2 つのクエリを実行したとします。それで

foreach ($educations as $education) {
  $talents[$talent_id]['course'][] = $education;
}

から行うこともできますがLEFT JOIN、この種の水分補給は、複数のレベルがあるとすぐに乱雑になるため、お勧めしません.

于 2013-05-24T09:43:32.923 に答える
0

多くのオプションがあります

私はよく使用します:

SELECT talent.talent_id, talent.talent_name, education.course FROM talent, education WHERE education.talent_id = education.course

教育が才能のために空っぽである場合、才能は買い物をしません。次に、結合を使用する必要があります

于 2013-05-24T09:43:52.740 に答える