灰:
申し訳ありませんが私の悪い英語のために、私は、MySQL 4のテーブルからデータを取得するための要件を持っていますが、それだけで1行を返します。
表1
col_2でTABL 1は、表2 col_2から基準として数値データを含みます
+----+-------+---------+
| id | col_1 | col_2 |
+----+-------+---------+
| 1 | A | 4 |
| 2 | B | 5 |
| 3 | C | 6 |
+----+-------+---------+
表2
+----+-------+---------+
| id | col_1 | col_2 |
+----+-------+---------+
| 1 | A | 4 |
| 2 | B | 5 |
| 3 | C | 6 |
| 4 | C | 7 |
| 5 | C | 8 |
+----+-------+---------+
表3
表3 COL_1は表1のIDの数値を有するが、テーマのほとんどが同じIDになり、そしてcol_2は表4からのIDの数値を有します
+----+-------+---------+
| id | col_1 | col_2 |
+----+-------+---------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 2 | 4 |
| 5 | 2 | 5 |
| 6 | 4 | 8 |
| 7 | 4 | 1 |
| 8 | 5 | 2 |
| 9 | 5 | 5 |
| 10 | 5 | 8 |
| 11 | 5 | 9 |
| 12 | 5 | 10 |
+----+-------+---------+
表4
+----+-------+
| id | col_1 |
+----+-------+
| 1 | A |
| 2 | B |
| 3 | C |
+----+-------+
クエリは、私がデータを取得するために実行します。
SELECT
t1.id,
t1.col_1,
t2.col_1 as result_0,
GROUP_CONCAT(t4.col_1) as result
FROM
table_1 AS t1
LEFT JOIN table_2 AS t2
ON t2.col_2 = t1.col_2
LEFT JOIN table_3 AS t3
ON t3.col_1 = t1.id
LEFT JOIN table_4 AS t4
ON t4.id = t3.col_2
WHERE t1.col_2 > 1
ORDER BY t1.id DESC
表3は、表1と表4から精IDを持っているあなたが見ることができるように私は、クエリは怒鳴るように私を返すようにしたいので、両方のテーブルには、値を持っています。それは私が表4からの値はカンマで区切るすることを意味します。
+----+-----------+-----------+-----------+
| id | result_1 | result_2 | result_3 |
+----+-----------+-----------+-----------+
| 1 | A | A | A,B,C |
| 2 | B | B | A,B |
| 3 | C | C | C,B |
+----+-----------+-----------+-----------+
UPDATE:ここでの要求に応じて、クエリのフィドルです。
SQLフィドルhttp://sqlfiddle.com/#!9/3af0af/1感謝
サンディープモーダカ:
あなたが投稿フィドルに基づいて、
あなたがしなければならないにクエリを変更します: -
SELECT
t1.id,
t1.name,
t2.role as result_0,
GROUP_CONCAT(t4.ct) as result
FROM
table_one AS t1
LEFT JOIN table_tow AS t2
ON t2.level = t1.level
JOIN table_three AS t3 //CHANGED LEFT JOIN TO JOIN
ON t3.vid = t1.id
LEFT JOIN table_four AS t4
ON t4.id = t3.cid
WHERE t1.level > 1
group by t1.id ORDER BY t1.id ASC //ADDED group by t1.id AND CHANGED ORDER BY t1.id DESC TO ORDER BY t1.id ASC