私はここに最初は私のテーブルです、私の現在のクエリに新しい列として追加さGROUP_CONCAT
でクエリを作成しようとしていますとのGROUP BYを除外しましょう:基本的に左サブクエリがnull結果
Users table
+----+----------+--------------+
| id | username | date_created |
+----+----------+--------------+
| 1 | user1 | 2000-03-16 |
| 2 | user2 | 2001-05-14 |
| 3 | user3 | 2002-01-13 |
| 4 | user4 | 2003-03-14 |
+----+----------+--------------+
Shifts table
+----+------------+--------------+
| id | shift_name | date_created |
+----+------------+--------------+
| 1 | shift1 | 2002-05-10 |
| 2 | shift2 | 2002-07-11 |
| 3 | shift3 | 2002-09-23 |
+----+------------+--------------+
Accounts table
+----+--------------+--------------+
| id | account_name | date_created |
+----+--------------+--------------+
| 1 | account1 | 2001-05-01 |
| 2 | account2 | 2001-05-02 |
| 3 | account3 | 2001-05-03 |
+----+--------------+--------------+
Shift Mapping table
+----+---------+----------+------------+
| id | user_id | shift_id | account_id |
+----+---------+----------+------------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
| 3 | 3 | 1 | 1 |
+----+---------+----------+------------+
、私が欲しいですそのユーザーに接続されているすべてのシフトを示すカスタム列を持つすべてのユーザー(テーブルに表示する)を取得するクエリ(nullの結果が明らかにシフトアタッチがない場合)
ここにクエリがあります私はこれまでにやったことがあります:
SELECT users.id AS user_id, users.username, users.date_created,
GROUP_CONCAT(DISTINCT (t.shift_name)) AS shifts
FROM (`users`)
LEFT JOIN
(SELECT s.shift_name, sm.user_id FROM shift_map sm
LEFT JOIN shifts s ON sm.shift_id = s.id) t
ON users.id = t.user_id
GROUP BY user_id
ORDER BY `users`.`date_created` DESC;
シフトを使用しているユーザーを取得するのに問題はありません。私の問題は、シフトがないユーザーがGROUP BY user_id
によって引き起こされる1つの結果しか返さないということです。 GROUP BYを使用するか、シフトを添付してシフトを適用しないすべてのユーザーを返すにはどうすればよいですか?ありがとう。
+---------+----------+--------------+----------------+
| user_id | username | date_created | shifts |
+---------+----------+--------------+----------------+
| 1 | user1 | 2000-03-16 | shift1,shift2 |
| 2 | user2 | 2001-05-14 | (NULL) |
| 3 | user3 | 2002-01-13 | shift1 |
| 4 | user4 | 2003-03-14 | (NULL) |
+---------+----------+--------------+----------------+
私のクエリで私の問題は、それが唯一のヌルシフトを有する唯一の1ユーザーを示すことである。ここでは
更新
は、私が見たいの例結果です。
あなたが探している正確な出力を指定できますか? – Sanj
こんにちは@Sanj例の結果について私の質問が更新されました。 – Cedric