2016-12-27 4 views
0

私はuser_idは、特定の日付とアクションに基づいて複数のテーブルからの結果を照会していますが、私はまた、別のテーブルと呼ばれるuser_notesありますmySQL複数のJOIN結果を一意の列として返す方法は?

user_notes

| id |  user_id |       note |   date | 
------------------------------------------------------------------------ 
| 1 |   10 |     First note. | 2016-01-01 | 
| 2 |   10 |     Second note. | 2016-01-02 | 
| 3 |   11 |     First note. | 2016-01-03 | 
| 4 |   11 |     Second note. | 2016-01-04 | 
| 5 |   11 |     Third note. | 2016-01-05 | 

を、私は疑問に思ってどのように私は返却しますこれらすべてのノートとその日付は、私が他のテーブルと結合したときに、各レコード/結果の別々の列として表示され、最終的な結果は次のようになります:

final_result

| user_id | other_data |  note1 |  date1 |  note2 |  date2 |  note3 |  date3 |... 
--------------------------------------------------------------------------------------------------------- 
| 10  | .......... | First note. | 2016-01-01 | Second note. | 2016-01-02 |    |   | ... 
| 11  | .......... | First note. | 2016-01-03 | Second note. | 2016-01-04 | Third note. | 2016-01-05 | ... 

のように...最大10冊のノートがありますので、それぞれの「ノート」と「日」のエントリを最大10の余分な列があるかもしれません。

これはどのように実現できますか?

+2

可能な複製(http://stackoverflow.com/questions/15462753/mysql-join-multiple-rows-列として) –

+0

アプリケーションコード – Strawberry

+0

でのデータ表示の処理の問題を考えることができません - 私はアプリケーションにデータを取得するSQLクエリに制限されます。アプリのパラメータはまったく変更できません。 –

答えて

0

このこのトリックによって達成することができます:[MySQLは列のように、複数の行を結合]の

select main.user_id, 
    first_note.note as note1, first_note.date, 
    second_note.note as note2, second_note.date, 
    ... 
from user_notes as main 
inner join (select * from user_notes where user_id = main.user_id limit 0,1) as first_note on main.user_id = first_note.user_id 
inner join (select * from user_notes where user_id = main.user_id limit 1,1) as second_note on main.user_id = second_note.user_id 
... 
+0

少し早めに16 ;-)でトリックを売っている – Strawberry

+0

多くは最初から始まりますが、ピーク時にはいくつか始まります;)答えはどうでしたか? –

+0

こんにちは、本当は...私はどこに行ったのか分かりませんが、私はちょうど "不明な列 'main.user_id' 'where句'"のエラー、その内部結合条件...どうにかして "main "参照はその内側のセレクトの内部をキャッチしていません。 –

関連する問題