Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 20/04/2011, 20h31   #1
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
Par défaut Besoin d'aide pour une requête SQL

Salut à tous !

J'ai besoin de votre aide pour une requête plutôt compliqué pour moi.

Je vous explique :

J'ai une table rtt(id_rtt, id_demande, date_rtt, heure_rtt, partie_du_jour_rtt, nb_heures_rtt)

Chaque RTT a un identifiant et appartient à une demande (il peut y avoir plusieurs RTT pour une demande), a une date, l'heure où il débute, si il est le matin ou l'aprem, et enfin est précisé le nombre d'heures bref ce n'est pas forcément le plus important.

Voici son contenu :



En fait je cherche à afficher pour chaque rtt de la demande n°32 (par exemple) le nombre d'heures et l'heure où il débute comme ceci :



Ceci est bien évidemment une image trafiquée, car c'est ce résultat que je veux.

Après je sais pas si c'est possible, mais j'ai un début de piste que je préfère ne pas dévoiler pour l'instant, je préfère que vous partiez avec votre logique à vous car je ne suis pas sûr que la mienne soit la bonne.

Merci beaucoup d'avance

PS : si le code SQL peut servir à quelqu'un, je le met ^^

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
--
-- Structure de la table `rtt`
--
 
CREATE TABLE IF NOT EXISTS `rtt` (
  `id_rtt` int(9) NOT NULL AUTO_INCREMENT,
  `id_demande` int(9) NOT NULL,
  `date_rtt` date NOT NULL,
  `heure_rtt` time NOT NULL,
  `partie_du_jour_rtt` varchar(2) CHARACTER SET utf8 NOT NULL,
  `nb_heures_rtt` float NOT NULL,
  PRIMARY KEY (`id_rtt`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;
 
--
-- Contenu de la table `rtt`
--
 
INSERT INTO `rtt` (`id_rtt`, `id_demande`, `date_rtt`, `heure_rtt`, `partie_du_jour_rtt`, `nb_heures_rtt`) VALUES
(2, 31, '2011-04-26', '14:15:00', 'pm', 1.5),
(3, 31, '2011-04-27', '10:15:00', 'am', 0.5),
(4, 31, '2011-04-28', '13:00:00', 'pm', 0.5),
(5, 32, '2011-04-27', '10:15:00', 'am', 0.75),
(6, 32, '2011-04-27', '16:00:00', 'pm', 1),
(7, 32, '2011-04-28', '08:00:00', 'am', 3.25),
(8, 32, '2011-04-29', '13:00:00', 'pm', 0.5);
Yos 6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 21h23   #2
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Salut,

Voilà une proposition, essaie le code suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
date_rtt,
id_demande,
IF(partie_du_jour_rtt = 'am', concat(nb_heures_rtt,' (', heure_rtt,')', NULL) am,
IF(partie_du_jour_rtt = 'pm', concat(nb_heures_rtt,' (', heure_rtt,')', NULL) pm
FROM
rtt
WHERE
id_demande = 32
GROUP BY
date_rtt,
id_demande
ORDER BY
date_rtt
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2011, 22h38   #3
Invité de passage
 
Homme
Webmaster
Inscription : avril 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : avril 2011
Messages : 9
Points : 2
Points : 2
Ah une proposition

Alors j'ai essayé mais ça me sort l'erreur suivante :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'am, IF(partie_du_jour_rtt = 'pm', concat(nb_heures_rtt,' (', heure_rtt,')', NULL' at line 4

Je ne savais pas que l'on pouvait mettre des conditions dans le select avec des "IF", est-ce compatible MySQL ?

MAJ: J'ai corrigé quelques petits truc

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
date_rtt,
id_demande,
IF(partie_du_jour_rtt = 'am', CONCAT(nb_heures_rtt,' (', heure_rtt,')'), NULL) AS 'am',
IF(partie_du_jour_rtt = 'pm', CONCAT(nb_heures_rtt,' (', heure_rtt,')'), NULL) AS 'pm'
FROM
rtt
WHERE
id_demande = 32
GROUP BY
date_rtt,
id_demande
ORDER BY
date_rtt
mais j'obtiens ce résultat :



Apparemment il manque le RTT n°6 en haut à droite
Yos 6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 11h34   #4
Membre Expert
 
Avatar de zoom61
 
Homme Vincent ...
Passionné d'informatique
Inscription : janvier 2005
Messages : 1 217
Détails du profil
Informations personnelles :
Nom : Homme Vincent ...
Âge : 39
Localisation : France, Haute Vienne (Limousin)

Informations professionnelles :
Activité : Passionné d'informatique
Secteur : Industrie

Informations forums :
Inscription : janvier 2005
Messages : 1 217
Points : 1 506
Points : 1 506
Envoyer un message via Yahoo à zoom61 Envoyer un message via Skype™ à zoom61
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
date_rtt,
id_demande,
max(IF(partie_du_jour_rtt = 'am', CONCAT(nb_heures_rtt,' (', heure_rtt,')'), NULL)) AS 'am',
max(IF(partie_du_jour_rtt = 'pm', CONCAT(nb_heures_rtt,' (', heure_rtt,')'), NULL)) AS 'pm'
FROM
rtt
WHERE
id_demande = 32
GROUP BY
date_rtt,
id_demande
ORDER BY
date_rtt
__________________
N'oubliez pas le Tag :

C'est en parvenant à nos fins par l'effort, en étant prêt à faire le sacrifice de profits immédiats en faveur du bien-être d'autrui à long terme, que nous parviendrons au bonheur caractérisé par la paix et le contentement authentique. [Dalaï Lama]
Je ne réponds pas aux messages privés s'ils sont liés à une question du forum

Mon site sur Developpez.com
zoom61 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h29.


 
 
 
 
Partenaires

Hébergement Web