Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours 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 25/01/2011, 10h56   #1
Membre actif
 
Avatar de albedo0
 
Julien C
Inscription : février 2007
Messages : 207
Détails du profil
Informations personnelles :
Nom : Julien C
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 207
Points : 167
Points : 167
Par défaut GROUP BY + enregistrement vide

Bonjour,

Mon sujet n'est pas clair du tout... mais je ne savais pas trop comment tourner la chose...

J'ai des groupes qui utilisent des horaires et je souhaiterai effectuer une requête pour avoir la liste des horaires avec pour chacun le nombre de groupe qui les utilise :

Alors voici ma requête :
Code :
1
2
3
4
5
SELECT count( g.grp_hour ) AS nb_use, h.h_id, h.h_begin, h.h_end
FROM c2i_hours AS h, c2i_groups AS g
WHERE h.h_id = g.grp_hour
GROUP BY h.h_begin
ORDER BY h.h_begin ASC , h.h_end ASC
Ça marche, mais bien évidemment, il manque les horaires qui ne sont utilisés par aucun groupe... avez-vous une idée ??

Merci par avance !
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 11h04   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
Bonjour,

Regardez du coté du "left outer join".
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 11h10   #3
Membre habitué
 
Développeur informatique
Inscription : juillet 2002
Messages : 96
Détails du profil
Informations personnelles :
Âge : 29
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : juillet 2002
Messages : 96
Points : 120
Points : 120
Par défaut left join

bonjour,

ceci devrait te donner ce que tu cherches.

Code :
1
2
3
4
5
SELECT count( g.grp_hour ) AS nb_use, h.h_id, h.h_begin, h.h_end
FROM c2i_hours AS h
LEFT JOIN c2i_groups AS g ON h.h_id = g.grp_hour
GROUP BY h.h_begin
ORDER BY h.h_begin ASC , h.h_end ASC
Cordialement
__________________
Je connais des gens qui ne sont pas aware, il ne sont pas qu courant. il ne sont pas a l'attention de savoir qu'ils existent.
"J-C Van dam"
Lharuun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 11h42   #4
Membre actif
 
Avatar de albedo0
 
Julien C
Inscription : février 2007
Messages : 207
Détails du profil
Informations personnelles :
Nom : Julien C
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 207
Points : 167
Points : 167
Super !!! Merci beaucoup ça marche parfaitement !!!
albedo0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2011, 15h26   #5
Membre actif
 
Avatar de albedo0
 
Julien C
Inscription : février 2007
Messages : 207
Détails du profil
Informations personnelles :
Nom : Julien C
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : février 2007
Messages : 207
Points : 167
Points : 167
Bon le principe y est il y avait juste une petit coquille que j'ai découvert un peu plus tard donc je viens la corriger :

Code :
1
2
3
4
5
SELECT count( g.grp_hour ) AS nb_use, h.h_id, h.h_begin, h.h_end
FROM hours AS h
LEFT JOIN groups AS g ON h.h_id = g.grp_hour
GROUP BY h.h_id
ORDER BY h.h_begin ASC , h.h_end ASC
Sans ça, les créneaux horaires commençant à la même heures n'étaient pas listés...
albedo0 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 02h52.


 
 
 
 
Partenaires

Hébergement Web