Affichage dans une view avec une condition particulière
cs_veridik
Messages postés12Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention24 juillet 2013
-
7 févr. 2006 à 15:17
Mindiell
Messages postés558Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention 5 septembre 2007
-
13 févr. 2006 à 15:41
Bonjour,
Etant débutant en SQL, je vous pose une question,
j'ai une Table `students` et une table `logaccess`.
Je veux sélectionner tous mes `students`.`idbadge` selon une condition particulière.
Explication : dans ma table `logaccess` j'ai des `idbadge`type INT et un `horodate` type TIMESTAMP.
Je veux afficher dans une view (je suis en mySQL 5.0)
col1 `idbadge` et col2 `horodate`
Dans ma col1 je veux tous les students.idbadge avec dans col2 leurs logaccess.horodate correspondants.
Mais pour les étudiants qui n'ont pas de horodate....ben je veux afficher un NULL est ce possible ?
<!--c1-->
<!--ec1-->DROP VIEW IF EXISTS `badge_log`.`vw_test`;
CREATE
ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER
VIEW `vw_test` AS select sql_no_cache `students`.`idbadge` AS
`idbadge`,cast(`logaccess`.`horodate` as date) AS `date` from
`students`,`logaccess` WHERE `logaccess`.`idbadge`=`students`.`idbadge`;<!--c2-->
<!--ec2-->
Dans mon WHERE je sais pas quoi utilisé car ici je ne selectionne que ceux qui ont un horodate dans logaccess.
A voir également:
Affichage dans une view avec une condition particulière
cs_veridik
Messages postés12Date d'inscriptionmercredi 11 mai 2005StatutMembreDernière intervention24 juillet 2013 7 févr. 2006 à 15:48
Bon j'ai une solution fonctionnelle
DROP VIEW IF EXISTS `badge_log`.`vw_test`;
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY
DEFINER VIEW `vw_test` AS select sql_no_cache `students`.`idbadge` AS
`idbadge`,cast(`logaccess`.`horodate` as date) AS `date` from
`students`,`logaccess` WHERE `logaccess`.`idbadge`=`students`.`idbadge`
UNION
select `students`.`idbadge` AS `idbadge`, NULL AS `date` from
`students` WHERE `idbadge` NOT IN (SELECT `idbadge` from `logaccess`)
Mindiell
Messages postés558Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention 5 septembre 20071 13 févr. 2006 à 15:41
Ca s'appelle une jointure externe :
remplace "from `students`,`logaccess` WHERE `logaccess`.`idbadge`=`students`.`idbadge`;"
par " FROM Students LEFT OUTER JOIN logaccess ON logacess.idbadge = students.idbadge"
<!--c2--><!--ec2-->