GROUP_CONCAT не возвращает все значения при использовании WHERE - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть две таблицы; Пакеты и пользователи:

CREATE TABLE packages
(id int,  package_number varchar(20));

 CREATE TABLE users
 (id_package int, user_name varchar(20), 
 user_org varchar(20));


INSERT into packages 
(`id`, `package_number`) 
VALUES 
('1', 'PACKAGE-0001'), 
('2','PACKAGE-0002');

INSERT INTO users 
(`id_package`, `user_name`, `user_org`)   
VALUES
('1', 'John', 'ABC Pty Ltd'),
('1', 'Rebecca', 'Northshore Pty Ltd'),
('1', 'Grace', 'Northshore Pty Ltd'),
('1', 'James', 'Bank Pty Ltd'),
('2', 'Jonas', 'Northshore Pty Ltd'),
('2', 'Smith', 'Refi Pty Ltd');

Я ВЛЕВО СОЕДИНЯЮ обе таблицы на основе идентификатора из пакетов и использую предложение WHERE для фильтрации "номера пакета" (который является varchar).

Я также комбинирую с предложением AND, чтобы выбрать, в какую организацию оно было отправлено, но в то же время я хочу, чтобы он возвращал ВСЕ организации, в которые он был.

Мой код :

SELECT 
    packages.*,
    GROUP_CONCAT(DISTINCT (TRIM(users.user_org))
        SEPARATOR ',') AS recipients
FROM
    packages
        LEFT JOIN
    users ON packages.id = users.id_package
WHERE
    packages.package_number = 'PACKAGE-0001' AND user_org IN ("Northshore Pty Ltd")

вывод:

id  package_number  recipients
1   PACKAGE-0001    Northshore Pty Ltd

ожидается:

id  package_number  recipients
1   PACKAGE-0001    ABC Pty Ltd,Northshore Pty Ltd,Bank Pty Ltd

Я создал скрипку здесь: http://sqlfiddle.com/#! 9 / b58a1e / 4

...