Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno [MSSQL] SELECT

Tá úloha sa mi nezdá celkom jednoznačne zadaná, ale ak chceš vybrať všetkých zákazníkov, ktorí si rezervovali iba zelené lode, tak môžeš použiť niečo takéto:

SELECT id_z FROM rezervace
LEFT JOIN lod ON lod.id_l=rezervace.id_l
GROUP BY id_z
HAVING SUM(CASE barva WHEN 'zelena' THEN 0 ELSE 1 END)=0
prípadne:
SELECT DISTINCT id_z FROM rezervace
WHERE id_z NOT IN (
	SELECT id_z FROM rezervace
	LEFT JOIN lod ON lod.id_l=rezervace.id_l
	WHERE barva<>'zelena'
)

Alebo ak chceš vybrať zákazníkov, ktorí si rezervovali všetky dostupné lode zelenej farby, tak napr. takto:
SELECT id_z FROM rezervace
LEFT JOIN lod ON lod.id_l=rezervace.id_l
GROUP BY id_z, barva
HAVING barva='zelena' AND COUNT(*)=(SELECT COUNT(*) FROM lod WHERE barva='zelena')

Edit: Tie selecty v príspevkoch nado mnou vyberú zákazníkov, ktorí si rezervovali aspoň jednu zelenú loď (nie všetky).

Reakce na odpověď

1 Zadajte svou přezdívku:
2 Napište svou odpověď:
3 Pokud chcete dostat ban, zadejte libovolný text:

Zpět do poradny