ďťż

[MySQL]Złożone zapytanie 2 tabele+grupowanie+agregowanie

       

Podstrony


telcocafe

Mam dwie tabele categories i media. W tabeli categories są kolumny cat_id (klucz główny, autoincrement), title (char) i boolean (tinyint), Tabela media: med_id (klucz główny, autoincrement), cat_id (integer), visible (tinyint) i title (char). Jak za jednym zapytaniem pobrać dane, gdzie będzie lista kategorii wraz z ilością mediów znajdujących się w każdej kategorii (dobrze by było, jak by pobierało tylko widoczne kategorie i widoczne media).
Próbowałem coś takiego:
SELECT categories.*, COUNT(media.*) AS ilosc FROM categories, media WHERE categories.cat_id=media.cat_id GROUP BY categories.cat_id HAVING media.visible=true AND categories.visible=true
Ale wysypuje się przy COUNT(media.*). <_<



trzeba połączyć dwie table przy pomocy polecenia JOIN
http://dev.mysql.com....1/en/join.html

Mam wypisane dwie tabele po przecinku, czyli zastosowałem full join. Chyba, że trzeba jakoś inaczej. :>

nie chce mi sie pisac wiec:

SELECT c.*, COUNT(m.id) as ilosc FROM cats as c INNER JOIN movies as m ON m.cat = c.id GROUP BY c.id ORDER BY c.title;



Dzięku Bełdzio. :) Po ułożeniu wyszło coś takiego: SELECT c.*, COUNT(m.med_id) as ilosc FROM categories AS c LEFT JOIN media AS m ON m.cat_id = c.cat_id AND m.visible=true GROUP BY c.cat_id HAVING c.visible=true;
Użytkownik KSMłody edytował ten post 11 lipiec 2007, 16:11
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.