j'ai un petit problème de jointures :/
Alors déjà la structure des tables:
Code : Tout sélectionner
CREATE TABLE IF NOT EXISTS `albums` (
`id_album` int(11) NOT NULL auto_increment,
`id_categorie` int(11) NOT NULL,
`nom` varchar(250) collate utf8_unicode_ci default NULL,
`description` text collate utf8_unicode_ci,
`date_creation` datetime default NULL,
`date_modification` datetime default NULL,
PRIMARY KEY (`id_album`,`id_categorie`),
KEY `fk_albums_categories` (`id_categorie`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='Liste des albums photos' AUTO_INCREMENT=6 ;
CREATE TABLE IF NOT EXISTS `photos` (
`id_photo` int(11) NOT NULL auto_increment,
`id_album` int(11) NOT NULL,
`url` varchar(250) collate utf8_unicode_ci default NULL,
`nom` varchar(250) collate utf8_unicode_ci default NULL,
`url_mini` varchar(250) collate utf8_unicode_ci default NULL,
`description` text collate utf8_unicode_ci,
`copyright` varchar(250) collate utf8_unicode_ci default NULL,
PRIMARY KEY (`id_photo`,`id_album`),
KEY `fk_photos_albums1` (`id_album`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='liste des photos des albums' AUTO_INCREMENT=17 ;Une requête de selection, et une autre de "comptage".
Voici la première qui fonctionne:
SELECT a.*, (SELECT COUNT(*) FROM photos as p WHERE p.id_album = a.id_album) as nb_photos FROM
albums as a
JOIN photos as p ON p.id_album=a.id_album
WHERE a.id_categorie = 1
GROUP BY a.id_album
ORDER BY a.date_modification DESC
Donc elle selectionne tout les albums qui ont au moins une photo (JOIN) et le nombre de photos (requête imbriquée)Première question, est-ce qu'il est possible déviter la requête imbriquée pour mon count?
Ensuite vient la requête de comptage, celle qui me pose réellement problème, bien sûr, il faut qu'elle compte les même éléments que la requête précédente, voici ce que je pensais faire:
SELECT COUNT(*) FROM
albums as a
JOIN photos as p ON p.id_album=a.id_album
WHERE a.id_categorie = 1
ORDER BY a.date_modification DESC
Mais elle ne fonctionne pas :/ si j'enlève le JOIN, c'est déjà plus correct, mais ça me reprend les albums qui n'ont aucune photos...Si vous avez une idée, je suis preneur
Merci d'avance!