SQL - Comment définir des variables et
Fermé
phenetas
Messages postés
1096
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
31 août 2017
-
22 févr. 2017 à 19:55
phenetas Messages postés 1096 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 31 août 2017 - 24 févr. 2017 à 15:48
phenetas Messages postés 1096 Date d'inscription mercredi 25 juillet 2007 Statut Membre Dernière intervention 31 août 2017 - 24 févr. 2017 à 15:48
A voir également:
- SQL - Comment définir des variables et
- Définir google comme page d'accueil - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Requête sql date supérieure à ✓ - Forum Programmation
- Soustraction sql - Forum Programmation
- Mia veut diffuser une vidéo en direct sur une plateforme de diffusion en continu et en direct (live streaming). pour cela, elle paramètre un logiciel de diffusion. elle veut : diffuser en 1080p avoir la vidéo la plus fluide possible ne pas surcharger inutilement son processeur quelle configuration doit-elle définir pour avoir le meilleur rendu ? ✓ - Forum Webmastering
2 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
22 févr. 2017 à 20:15
22 févr. 2017 à 20:15
Bonjour,
J'ai pas trop réfléchi mais si j'ai bien compris, tu pourrais faire des COUNT de nom_objet (HAVING nom_objet='A' ou 'B' selon) et ce pour chacun des ID_base ce qui te permettrait de savoir combien d'objets A ou B chaque station possède.
J'ai pas trop réfléchi mais si j'ai bien compris, tu pourrais faire des COUNT de nom_objet (HAVING nom_objet='A' ou 'B' selon) et ce pour chacun des ID_base ce qui te permettrait de savoir combien d'objets A ou B chaque station possède.
Reivax962
Messages postés
3671
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
23 févr. 2017 à 10:36
23 févr. 2017 à 10:36
Bonjour,
Le SQL n'a pas besoin de boucles FOR :)
Tu peux réaliser ce que tu veux en une seule requête bien écrite.
Par exemple, quelque chose comme ça :
Pour obtenir le texte résumé, tu peux effectivement réutiliser cette requête comme sous-requête, faire un GROUP BY types_objets avec des COUNT :
Note que cette façon de faire convient tant que tu ne rajoutes pas de nouveaux types d'objets... Cela deviendra plus compliqué si on ne connait pas les types d'objets possibles.
Xavier
Le SQL n'a pas besoin de boucles FOR :)
Tu peux réaliser ce que tu veux en une seule requête bien écrite.
Par exemple, quelque chose comme ça :
SELECT id, nom_station, CASE WHEN nbA = 0 AND nbB = 0 THEN 'Aucun objet' WHEN nbA = 0 AND nbB > 0 THEN 'Que des B' WHEN nbA > 0 AND nbB = 0 THEN 'Que des A' ELSE 'Des A et des B' END as types_objets FROM ( SELECT s.id, s.nom_station, SUM(CASE COALESCE(nom_objet, 'Z') WHEN 'A' THEN 1 ELSE 0 END) as nbA, SUM(CASE COALESCE(nom_objet, 'Z') WHEN 'B' THEN 1 ELSE 0 END) as nbB FROM stations s LEFT OUTER JOIN objet o ON o.id_base = s.id GROUP BY s.id, s.nom_station ) as n
Pour obtenir le texte résumé, tu peux effectivement réutiliser cette requête comme sous-requête, faire un GROUP BY types_objets avec des COUNT :
SELECT types_objets, count(*) FROM ( SELECT id, nom_station, CASE WHEN nbA = 0 AND nbB = 0 THEN 'Aucun objet' WHEN nbA = 0 AND nbB > 0 THEN 'Que des B' WHEN nbA > 0 AND nbB = 0 THEN 'Que des A' ELSE 'Des A et des B' END as types_objets FROM ( SELECT s.id, s.nom_station, SUM(CASE COALESCE(nom_objet, 'Z') WHEN 'A' THEN 1 ELSE 0 END) as nbA, SUM(CASE COALESCE(nom_objet, 'Z') WHEN 'B' THEN 1 ELSE 0 END) as nbB FROM stations s LEFT OUTER JOIN objet o ON o.id_base = s.id GROUP BY s.id, s.nom_station ) as n ) as resume GROUP BY types_objets
Note que cette façon de faire convient tant que tu ne rajoutes pas de nouveaux types d'objets... Cela deviendra plus compliqué si on ne connait pas les types d'objets possibles.
Xavier
phenetas
Messages postés
1096
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
31 août 2017
224
24 févr. 2017 à 15:48
24 févr. 2017 à 15:48
Merci beaucoup Xavier !
Superbe réponse, j'ai beaucoup apprit en décortiquant cette requête.
Superbe réponse, j'ai beaucoup apprit en décortiquant cette requête.
23 févr. 2017 à 09:54
Et pour aller plus loin j'aimerais avoir un résumé du genre :
Il y a X stations avec des objets "A" ET "B"
Il y a Y stations avec des objets "A" uniquement
Il y a N stations avec des objets "B" uniquement
J'imagine que je vais devoir utiliser un COUNT sur les résultats de la requête précédente ?