[SQL] Problem z relacjami

0

Mam problem ze skonstruowaniem zapytania wyciągającego dane z dwóch tabel. Mam tabelę zawierającą dane obrazków oraz tabelę komentarzy, w której każdy rekord zawiera pole określające przynależność komentarza do danego obrazka (czyli zawiera po prostu ID obrazka). Teraz problem w tym, aby wyświetlając obrazki pokazać też liczbę komentarzydla danego obrazka. Domyślam się, że trzeba skorzystać z JOIN, jednak siedzę nad manualem i nie mam żadnego konkretnego pomysłu na zapytanie. Z góry dzięki za pomoc.

0

Niekoniecznie musisz korzystać z joina, jeśli znasz ID obrazka to wystarczy:

SELECT COUNT(*) FROM tabela_komentarzy WHERE ID_obrazka = 'id_obrazka'

Natomiast jeżeli robisz liste obrazków to użyj podzapytania SQL-a nie mam przy sobie MySQL-a ale powinno zadziałać

SELECT nazwa_obrazka, (SELECT COUNT(*) FROM tabela_komentarzy WHERE ID_obrazka = 'tabela_obrazka.id_obrazka') FROM tabela_obrazków

Testowałem na MS SQL ale powinno byc podobnie chociaż nie wiem jak MySQL radzi sobie z podzapytaniami...

0

Na nic... MySQL obsługuje podzapytania ponoć od wersji 4.1, a ja dysponuję ciut starszą :/. Jest jakieś inne rozwiązanie? Czy po prostu trzeba będzie w pętli wywoływać kolejne zapytania SQL?

0

To w ramach lekcji masz 2 rozwiązania - do analizy :)

select obraz_nazwa, count(komentarz_id) as ile
from obrazy, komentarze
where obraz_id = komentarz_obraz_id
group by obraz_id

select obraz_nazwa, count(komentarz_id) as ile
from obrazy
left join komentarze on obraz_id = komentarz_obraz_id
group by obraz_id

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