postgresql count w case i group by

0

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ąć ?

0

Super! max to jest to! :) Temat rozwiązany :)

0

Usunąłem niechcący odpowiedź :)

 max(company.name);
0

magazine??? znaczy gazety sprzedajesz?

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