ďťż
Podstrony
|
telcocafeMam 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 |
|||
Sitedesign by AltusUmbrae. |