Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2011, 09h22   #1
Membre du Club
 
Inscription : juin 2009
Messages : 101
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 101
Points : 40
Points : 40
Par défaut Requete avec inner join sur une meme table

Bonjour,

LA structure de ma table enfantaccueilpointage se présente ainsi :

id
datedebut
arrivée
départ
durée
année
prevision
idtableaccueil
idtableenfant
idtableenfantaccueil

Dans arrivee et depart je stock des heures,la colonne prévision qui contient 0 ou 1 sert a savoir si les heures enregistré sont des heures "réelles" ou des heures prévisionnel, pour le meme jour il peu y avoir un enregistrement avec des heures réelle et u autre avec des heures previsionnel.

Maintenant en fait j'ai besoin pour un jour donnée d'afficher et les prevision et les heures reelles dans un meme resultat de requete.

Du coup j'ai ecrit cette requete :
Code :
1
2
3
4
5
6
7
8
9
10
 
SELECT b.idtableenfantaccueil,b.idtableenfant,b.idaccueil,IF(b.datedebut = '2011-12-12', b.arrivee,'00:00') AS pointagearrivee, 
IF( b.datedebut = '2011-12-12',b.depart ,'00:00')AS pointagedepart,IF( a.datedebut = '2011-12-12',a.arrivee,'00:00') AS previsionarrivee,
 IF( a.datedebut = '2011-12-12',a.depart  ,'00:00') AS previsiondepart,a.datedebut AS deb1,b.datedebut AS deb2
  FROM  (SELECT * FROM enfantaccueilpointage WHERE prevision=0 AND datedebut = '2011-12-12') b 
INNER JOIN (SELECT * FROM enfantaccueilpointage WHERE prevision=1 AND datedebut= '2011-12-12' ) AS a ON 
(b.enfantaccueilid=a.enfantaccueilid  AND b.enfantid =b.enfantid AND b.annee = a.annee AND 
b.accueilid= a.accueilid AND a.datedebut = b.datedebut) WHERE (a.datedebut = '2011-12-12' OR b.datedebut =  '2011-12-12' 
OR (a.datedebut IS NULL AND b.datedebut IS NULL))) c ON (enfantaccueil.enfantaccueilid=c.enfantaccueilid 
AND accueil.accueilid = c.accueilid AND enfantaccueil.enfantid = c.enfantid AND (anneedate.jour = c.deb1 OR anneedate.jour = c.deb2)))
Cette requete fonctionne assez bien mon seul souci et quand pour un jour donnée j'ai des arrive et depart previsionnel ou des arrivee et depart relle , mes heures ne s'affiche pas , elle s'affiche seulement quand j'ai les 2 pour le meme jour et je n'arrive pas a trouver comment modifier ma requete pour avoir soit l'un soit l'autre soit les deux

Merci
mattmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2011, 14h34   #2
Membre du Club
 
Inscription : juin 2009
Messages : 101
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 101
Points : 40
Points : 40
c bon j'ai trouvé merci
mattmax est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h05.


 
 
 
 
Partenaires

Hébergement Web