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.
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...
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?
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