Comment définis-tu "premier" ? Y a-t'il une colonne servant à classer les photos ?afficher que la premiere photo de ces themes
Code : Tout sélectionner
CREATE TABLE machin (
champ1 INT;
)Code : Tout sélectionner
CREATE TABLE `photos` (
`id_photo` int(11) NOT NULL auto_increment,
`id_photo_groupe` smallint(6) unsigned default '0',
`photo_nm` varchar(80) NOT NULL,
`photo_titre` varchar(150) NOT NULL,
`photo_txt` tinytext,
`photo_auteur` varchar(60) default NULL,
`date` date default NULL,
`date_in` timestamp NOT NULL default CURRENT_TIMESTAMP,
PRIMARY KEY (`id_photo`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1;
Code : Tout sélectionner
SELECT id_photo_groupe, MAX(date_in) AS date_in
FROM photos
WHERE id_photo_groupe <> 1
GROUP BY id_photo_groupeCode : Tout sélectionner
SELECT MAX(p1.id_photo) AS id_photo
FROM
(
SELECT id_photo_groupe, MAX(date_in) AS date_in
FROM photos
WHERE id_photo_groupe <> 1
GROUP BY id_photo_groupe
) AS tmp1
JOIN photos p1 USING (id_photo_groupe, date_in)
GROUP BY p1.id_photo_groupeCode : Tout sélectionner
SELECT p2.*
FROM
(
SELECT MAX(p1.id_photo) AS id_photo
FROM
(
SELECT id_photo_groupe, MAX(date_in) AS date_in
FROM photos
WHERE id_photo_groupe <> 1
GROUP BY id_photo_groupe
) AS tmp1
JOIN photos p1 USING (id_photo_groupe, date_in)
GROUP BY p1.id_photo_groupe
) AS tmp2
JOIN photos p2 USING (id_photo)Code : Tout sélectionner
(
SELECT *
FROM photos
WHERE id_photo_groupe = 1
)
UNION ALL
(
SELECT p2.*
FROM
(
SELECT MAX(p1.id_photo) AS id_photo
FROM
(
SELECT id_photo_groupe, MAX(date_in) AS date_in
FROM photos
WHERE id_photo_groupe <> 1
GROUP BY id_photo_groupe
) AS tmp1
JOIN photos p1 USING (id_photo_groupe, date_in)
GROUP BY p1.id_photo_groupe
) AS tmp2
JOIN photos p2 USING (id_photo)
)Code : Tout sélectionner
CREATE INDEX date_par_groupe ON photos (id_photo_groupe, date_in)