Récupérer des événements et leur dernière photo

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Récupérer des événements et leur dernière photo

Récupérer des événements et leur dernière photo

par VaN » 03 mars 2011, 18:40

Bonjour à tous,

j'ai 2 tables, que voici :
CREATE TABLE IF NOT EXISTS `closevent_events` (
  `event_id` int(11) NOT NULL AUTO_INCREMENT,
  `event_datetime` datetime NOT NULL,
  `event_offer_start` datetime NOT NULL,
  `event_offer_end` datetime NOT NULL,
  `event_type_id` tinyint(4) NOT NULL,
  `event_region_id` tinyint(4) NOT NULL,
  `event_title` varchar(100) NOT NULL,
  `event_introduction` varchar(50) NOT NULL,
  `event_description` text NOT NULL,
  `event_informations` text NOT NULL,
  `event_address` varchar(100) NOT NULL,
  `event_zipcode` varchar(10) NOT NULL,
  `event_city` varchar(100) NOT NULL,
  `event_partner_link` varchar(200) NOT NULL,
  `event_status` tinyint(1) NOT NULL,
  PRIMARY KEY (`event_id`),
  KEY `event_type` (`event_type_id`),
  KEY `event_region_id` (`event_region_id`),
  KEY `event_status` (`event_status`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;

--
-- Contenu de la table `closevent_events`
--

INSERT INTO `closevent_events` (`event_id`, `event_datetime`, `event_offer_start`, `event_offer_end`, `event_type_id`, `event_region_id`, `event_title`, `event_introduction`, `event_description`, `event_informations`, `event_address`, `event_zipcode`, `event_city`, `event_partner_link`, `event_status`) VALUES
(3, '2011-03-08 17:21:17', '2011-02-28 17:20:41', '2011-03-07 17:21:14', 2, 1, 'Lorem ipsum dolor sit amet', 'Lorem ipsum dolor sit amet, consectetur adipiscing', '<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eget dolor  neque. Vivamus sollicitudin leo mi, quis rutrum dui. Pellentesque in  arcu turpis. Vivamus arcu ante, scelerisque mollis fringilla a, posuere  eget nisl. Mauris leo enim, porttitor quis tristique sit amet, vulputate  quis risus. Proin tristique, nisl eu mattis rhoncus, tellus massa  consequat metus, nec imperdiet urna lacus fermentum massa. Maecenas  vulputate ullamcorper magna, vel rhoncus augue condimentum sit amet.  Praesent consectetur, nunc non aliquet consequat, enim dolor semper est,  volutpat sagittis nulla justo cursus nisi. Donec erat tortor, dignissim  at adipiscing eget, elementum eu nunc. Curabitur nisl erat, elementum  dignissim molestie eget, semper sed felis. Nam vehicula quam nec dui  iaculis sit amet gravida magna posuere. Suspendisse aliquet, velit at  porta varius, orci dolor faucibus urna, interdum semper nulla metus ac  mauris. In at libero vestibulum nulla eleifend pulvinar.</p>', '<p>Nunc egestas pellentesque felis in vestibulum. Aliquam erat volutpat.  Nam ut semper tortor. Duis dui lacus, suscipit et pretium a, placerat at  massa. Aliquam erat volutpat. Cum sociis natoque penatibus et magnis  dis parturient montes, nascetur ridiculus mus. Etiam vel odio turpis.  Proin et sollicitudin arcu.</p>', '1 rue de Paris', '75001', 'Paris', '', 1),
(5, '2011-03-31 00:00:00', '2011-03-16 09:00:00', '2011-03-30 18:00:00', 6, 5, 'Praesent luctus', 'Praesent luctus, lacus sed faucibus commodo', '<p>Praesent luctus, lacus sed faucibus commodo, nulla nisi placerat quam,  sit amet blandit tortor dui ultricies sem. Ut interdum sodales dolor nec  convallis. Phasellus luctus tincidunt tortor, nec mattis ipsum laoreet  vel. Integer facilisis aliquam nulla, non suscipit ligula accumsan vel.  In hac habitasse platea dictumst. Sed rhoncus, purus eget placerat  ultrices, nibh purus facilisis nunc, quis vulputate orci lorem in  turpis. Etiam porttitor accumsan magna in pretium. Sed molestie felis in  leo congue sit amet condimentum ipsum commodo. Nam adipiscing, tellus  imperdiet sagittis tempus, lectus purus tristique augue, sit amet  tristique purus eros sit amet ante. Pellentesque habitant morbi  tristique senectus et netus et malesuada fames ac turpis egestas.  Vivamus porta semper hendrerit. Aenean cursus consequat magna, placerat  porttitor leo lobortis nec. Curabitur quis diam diam. Nullam consectetur  eros justo, sit amet vestibulum enim. Morbi ut justo orci, eget  tristique odio. Quisque vitae ligula vel purus dapibus accumsan vel  auctor velit. Curabitur eu elit diam. Quisque vel velit at urna  ultricies condimentum. Quisque lacinia, diam eu pulvinar gravida, elit  augue consequat est, eget venenatis diam dui id elit. Morbi eget libero  nulla, eu tincidunt dui.</p>', '<p>Integer lacinia placerat sapien, vitae lobortis augue porta eu. Nulla  dui magna, volutpat quis mattis dictum, consectetur vitae lorem. Aenean  sed dapibus risus. Sed viverra elementum imperdiet. Vivamus sed  consequat tortor.</p>', '2 rue de Paris', '75002', 'Paris', '', 1);

-- --------------------------------------------------------

--
-- Structure de la table `closevent_events_medias`
--

CREATE TABLE IF NOT EXISTS `closevent_events_medias` (
  `media_id` int(11) NOT NULL AUTO_INCREMENT,
  `media_event_id` int(11) NOT NULL,
  `media_datetime` datetime NOT NULL,
  `media_type` enum('image','video') NOT NULL,
  `media_file` varchar(200) NOT NULL,
  `media_status` tinyint(1) NOT NULL,
  PRIMARY KEY (`media_id`),
  KEY `media_event_id` (`media_event_id`,`media_type`,`media_status`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=12 ;

--
-- Contenu de la table `closevent_events_medias`
--

INSERT INTO `closevent_events_medias` (`media_id`, `media_event_id`, `media_datetime`, `media_type`, `media_file`, `media_status`) VALUES
(7, 3, '2011-03-03 16:45:18', 'image', 'event-3-fotolia_5857492.jpg', 1),
(8, 3, '2011-03-03 16:45:19', 'image', 'event-3-fotolia_4582794.jpg', 1),
(9, 3, '2011-03-03 16:45:19', 'video', 'event-3-sample_mpeg4.mp4', 1),
(11, 5, '2011-03-03 17:25:31', 'image', 'event-5-fotolia_5857492.jpg', 1);
J'aimerai faire une requête qui va récupérer les événements, ainsi que leur dernière photo. Je pourrai faire ça en 2 fois, récupérer les évenements, boucler, et récupérer la dernière photo, mais je préfererai faire cela en une seule requête.

Voici ma requête actuelle, mais je suis un peu bloqué :
SELECT EVENTS.*, TYPES.type_name, REGIONS.region_name, MEDIAS.media_type, MEDIAS.media_file FROM closevent_events_types TYPES, closevent_regions REGIONS, closevent_events EVENTS LEFT JOIN closevent_events_medias MEDIAS ON media_event_id = event_id AND media_type = 'image' WHERE event_offer_start <= NOW() AND event_offer_end >= NOW() AND event_status = 1 GROUP BY event_id ORDER BY event_datetime ASC
Actuellement le récupère bien une photo, mais il s'agit de celle avec le plus petit media_id. Que dois-je rajouter pour récupérer la dernière photo (c'est à dire celle avec le media_id le plus élévé) ?