Tôi muốn liệt kê tất cả người dùng với lớp người dùng corropsonding của họ. Dưới đây là phiên bản đơn giản của bảng của tôimysql GROUP_CONCAT
CREATE TABLE users (
user_id INT NOT NULL AUTO_INCREMENT,
user_class VARCHAR(100),
PRIMARY KEY (user_id)
);
INSERT INTO users VALUES
(1, '1'),
(2, '2'),
(3, '1,2');
CREATE TABLE classes (
class_id INT NOT NULL AUTO_INCREMENT,
class_name VARCHAR(100),
PRIMARY KEY (class_id)
);
INSERT INTO classes VALUES
(1, 'Class 1'),
(2, 'Class 2');
Và đây là báo cáo kết quả truy vấn Tôi cố gắng để sử dụng nhưng chỉ trả lại lớp người sử dụng phù hợp đầu tiên và không phải là một danh sách nối như mong đợi.
SELECT user_id, GROUP_CONCAT(DISTINCT class_name SEPARATOR ",") AS class_name
FROM users, classes
WHERE user_class IN (class_id)
GROUP BY user_id;
Output thực tế
+---------+------------+
| user_id | class_name |
+---------+------------+
| 1 | Class 1 |
| 2 | Class 2 |
| 3 | Class 1 |
+---------+------------+
Output Wanted
+---------+---------------------+
| user_id | class_name |
+---------+---------------------+
| 1 | Class 1 |
| 2 | Class 2 |
| 3 | Class 1, Class 2 |
+---------+---------------------+
Cảm ơn trước
+1 cho thiết kế RDBMS thích – WirthLuce