MySQL podzapytanie WHERE IN()

0

W mojej bazie mam klientów do których wysyłane są towary.
Klienci łączeni są w grupy i wysyłane są do nich jakieś przedmioty. Czasem do wszystkich te same, czasem z lekkimi zmianami (np tylko 1 produkt dla jednego klienta w grupie się różni). Potrzebuję zapytania, które zwróci tylko te przedmioty, które w danej grupie są takie same dla każdego.
Przykład:
GRUPA I

  • User 1: towarA, towarB, towarC
  • User 2: towarA, towarC, towarD
  • User 3: towarA, towarB, towarC
    wspólne elementy, to towarA oraz towarC

DEMO
https://www.db-fiddle.com/f/ktYeKF6Ka7KV3NZTLh9aGe/0

Mam tutaj pierwsze zapytanie, które dla warunku
WHERE column_name IN przyjmuje podzapytanie
Samo podzapytanie zwraca to czego oczekuję - czyli żądaną kolumnę połączoną przecinkami (linijka nr. 15).
Jednak całe zapytanie nie zwraca zupełnie nic.
Gdy to podzapytanie zastąpię wpisanymi z palca wartościami id_shipping IN (1,2) to już wszystko działa prawidłowo.

Jakieś pomysły co przeoczyłem?

1

group_concat zwraca ciąg znaków, więc:

id_shipping IN (
  SELECT GROUP_CONCAT(id_shipping SEPARATOR ', ') FROM customer_to_schedule WHERE id_schedule=1
)

... oznacza:

id_shipping IN (
  "1,2"
) 

... a nie to co myślisz :-)

Całe szczęście, rozwiązanie jest proste:

id_shipping IN (
  SELECT id_shipping FROM customer_to_schedule WHERE id_schedule=1
)

(zamiast podzapytania, możesz też wykorzystać JOIN.)

1 użytkowników online, w tym zalogowanych: 0, gości: 1