Jak wybrać jedno zdjęcie do przypisanych artykułów ?

0

Pomóżcie biednemu programiście :) bo nie mogę sobie poradzić, z takim oto chyba prostym w sumie zadaniem. Mam tabelke powiedzmy z artykułami prasowymi i druga tabela w której jest lista zdj z danego katalogu. Chodzi o to że chciałbym wybrać listę tych artykułów wybrać ile jest zdjęć w danym artykule i jedno najnowsze zdj.

Tabela FOLDERS

ID name
1 tytul 1
2 tytul 2
3 tytul 3
4 tytul 4
5 tytul 5

Tabela IMAGES

ID id_art link
1 1 link 1
2 1 link 2
3 1 link 3
4 1 link 4
5 1 link 5
6 2 link 1
7 3 link 1
8 3 link 2
9 4 link 1

Chciałbym by wynik z SQL był taki:

id art suma zdj link do ostatnio dodanego zdj
1 5 link 5
2 1 link 1
3 2 link 2
4 1 link 1
5 0
SELECT f.id, f.name, count(i.id), img.link FROM folders f JOIN (select max(id) as MX, link, id_folder FROM images GROUP BY link, id_folder) img ON img.id_folder = f.id LEFT JOIN images i ON f.id = i.id_folder GROUP BY f.id, img.link;

Powyzszy kod nie dziala jak chcialem ma ktoś jakąś sugestię ?

1
 SELECT f.id, f.name, isnull(img.ile,0), i.link FROM folders f left JOIN (SELECT MAX(id) AS MX, count(id_art) ile, id_art FROM images GROUP BY id_art) img ON (img.id_art = f.id) LEFT JOIN images i (ON img.mx = i.id)
0

Paweł jestes magikiem, dzieki wielkie dziala jak trzeba :) zajebiscie aaaaaaaaa jestem uratowany

0

Czyli takie zapytanie:

SELECT f.id,
       f.name,
       isnull(img.ile, 0),
       i.link
FROM folders f
     LEFT JOIN 
     (
       SELECT MAX(id) AS MX,
              COUNT(id_art) ile,
              id_art
       FROM images
       GROUP BY id_art
     ) img ON (img.id_art = f.id)
     LEFT JOIN images i(ON img.mx = i.id)

Nie podoba mi się to grupowanie po wszystkich wierszach z tabeli images; nie wiem jak to zdziała w tej bazie danych (co to za baza, MySQL?), ale raczej niezbyt wydajnie.
Dodasz tam 100 tyś zdjęć i będzie czkawka...

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