Witam mam następujący problem
mam w bazie trzy tabele
magazine, item, company oraz tabele łączącą wiele do wielu itemy z magazynami,
każdy magazyn na itemy a kazdy item należy do jakiejś firmy
Chce zrobić teraz cos takiego:
jeśli wszystkie itemy z magazynu należą do tej samej firmy to dostaje nazwę tej firmy a jeśli są rożne to nulla.
Wymyśliłem cos takiego:
SELECT
CASE WHEN count(DISTINCT company.id ) > 1 THEN null ELSE company.name END
FROM
magazine
LEFT JOIN item_in_magazine
ON magazine.id = item_in_magazine.magazine
LEFT JOIN items
ON item_in_magazine.item = item.id
LEFT JOIN company
ON company.id = item.company
where marazine.id = 10
lecz niestety cos takiego nie działa, dostaje informacje żeby dodać company.name
do group by
ale gdy dodam group by company.name to zapytanie nie działa tak jak oczekuje - zwraca kilka rekordów - a powinno dać NULL bo wszystkie firmy dla tego przypadku są różne
jeśli zrobiłbym tak:
SELECT
CASE WHEN count(DISTINCT company.id ) > 1 THEN null ELSE "test" END
FROM
magazine
LEFT JOIN item_in_magazine
ON magazine.id = item_in_magazine.magazine
LEFT JOIN items
ON item_in_magazine.item = item.id
LEFT JOIN company
ON company.id = item.company
where marazine.id = 10
to wszystko jest oki - jeśli wszystkie firmy są różne dostaję NULL, jeśli natomiast są takie same dostaje „test” a chciałbym w miejsce test dostać nazwę konkretnej firmy
Czy ktoś ma jakieś propozycję jak to osiągnąć ?