SELECT c.cat_id AS cat_id,c.cat_name AS cat_name,COUNT(i.cat_id) AS ile,i.image_date AS ostatnie , i.image_thumb_file AS nazwa FROM 4images_categories c,4images_images i WHERE c.cat_parent_id =6 AND c.cat_id=i.cat_id AND i.image_active=1 GROUP BY i.cat_id, c.cat_order ORDER BY i.image_date DESC, c.cat_order ASC
c.cat_id|c.cat_name|ile | ostatnie | nazwa
58 | gr.23 | 60 |1165222205|jas.jpg
65 |mala |23 |9 1092066884|tadek.jpg
Zapytanie ma zliczyć ile jest zdjęć w każdej grupie i to działa bez zarzutu dodatkowo muszę posortować wedle c.cat_order i tu też niewiedze problemu ale problem pojawia się w momencie kiedy potrzebuje obrazu mieć datę ostatnio dodanego zdjęcia wtedy przestaje wo gule działać sortowanie
Gdzie jest błąd co żle robie z góry dziękuje za rady generalnie mogłem to wykonać w dwóch pentlach ale uparłem się że wyciągne to wszystko w jednym zapytaniu bo zakładam że się da
Doszłem narazie do czegoś takiego
SELECT c.cat_id AS cat_id, c.cat_name AS cat_name, COUNT( i.cat_id ) AS ile, i.image_date AS ostatnie, i.image_thumb_file FROM 4images_categories c, 4images_images i WHERE c.cat_parent_id =6 AND c.cat_id = i.cat_id AND i.image_active =1 AND i.image_date = ( SELECT max( image_date ) FROM 4images_images WHERE i.cat_id = c.cat_id ) GROUP BY i.cat_id, c.cat_order ORDER BY i.image_date DESC , c.cat_order ASC
Ale pobiera mi tylko jeden rekord ale już z dobrą datą jak to zmodyfikować żeby pobierał wszystkie rekordy??
Rozwiązanie okazała się banalnie proste może komuś się przyda
SELECT c.cat_id AS cat_id, c.cat_name AS cat_name, COUNT( i.cat_id ) AS ile, min( i.image_date ) AS ostatnie, i.image_thumb_file FROM 4images_categories c, 4images_images i WHERE c.cat_parent_id =6 AND c.cat_id = i.cat_id AND i.image_active =1 GROUP BY i.cat_id, c.cat_order ORDER BY c.cat_order ASC
Nie będe zakładać nowego wątku tylko się do tego dopiszę bo problem jest podobny teraz potrzebuje wybrać dane z trzech tabel dane obrazka nick użytkownika oraz liczbę komentarzy dla danego zdjęcia
SELECT i.cat_id AS cat_id,i.image_name AS image_name, i.image_media_file AS image_media_file,i.image_thumb_file AS image_thumb_file, l.nick AS nick,COUNT(c.image_id) AS kom FROM (loginy l,4images_images i) LEFT JOIN 4images_comments AS c ON c.image_id=i.image_id WHERE i.image_active=1 AND i.cat_id=26 AND l.id=i.user_id ORDER BY i.image_date DESC
Wszystko działa poprawnie ale bez left joina jak go dołączam żeby zliczyć liczbę komentarzy to przestaje działać z góry dzięki za sugestię