Cześć, mam taką oto łamigłówkę:
Dla przejrzystości niech tabela PERSON posiada jedynie klucz główny PERSON_ID, a tabela PERSON_CARS posiada dwa atrybuty: PERSON_ID (klucz obcy) oraz CAR_ID - tabela PERSON przechowuje informacje o kierowcach, a w tabeli PERSON_CARS mamy informację kto jeździ danym samochodem.
Wartości w tabeli PERSON są następujące:
1
2
3
4
Wartości w tabeli PERSON_CARS są następujące:
1 1
1 2
3 3
3 4
(czyli osoby 1 i 3 mają po 2 samochody, a 2 i 4 - żadnego).
Zagadką dla mnie jest skonstruowanie takiego zapytania SQL, które zwróci coś takiego:
PERSON COUNT
1 2
2 0
3 2
4 0
Problemem jest to, że jeśli zrobimy najprostsze zapytanie z COUNT to otrzymamy jedynie dwa wiersze: 1 2 oraz 3 2:
select person_id, count(*)
from person_cars
group by person_id;
Gdy użytkownik nie ma żadnego samochodu - count nie zwróci 0 tylko po prostu nie wyświetli wiersza (co jest oczywiste). Jak rozwiązać ten problem?