Panne requête SQL
SexyPotatoe
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
SexyPotatoe Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
SexyPotatoe Messages postés 11 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Seulement un jour que je suis inscris ici et voila déjà ma deuxième question.
Toujours en vue d'élaguer une grande base de données, je dois effectuer une ou surement plusieurs pour que la table soit traitée comme convenue.
J'ai trois champs : ID, Puissance, Combustible
J'ai les conditions suivantes :
Si un "ID" contient plusieurs "Puissance", agréger l'ID en sommant les différentes "Puissance" ;
Si il y a plusieurs types de combustibles pour un même "ID", ne garder que le "Combustible" correspondant à la plus grande "Puissance".
Pour le premier j'ai essayé de me lancer avec la commande suivante :
SELECT ID, Sum(Puissance), Combustible
FROM MaTable
GROUP BY ID, Combustible;
ça fonctionne, mais il subsiste tout de même des ID doublons, d'autant plus que du coup, la somme des Puissance est faussée, vu qu'elle existe en double...
Merci de m'aider, l'avenir du canton de Vaud dépend de votre réponse !
Bien à vous...
Seulement un jour que je suis inscris ici et voila déjà ma deuxième question.
Toujours en vue d'élaguer une grande base de données, je dois effectuer une ou surement plusieurs pour que la table soit traitée comme convenue.
J'ai trois champs : ID, Puissance, Combustible
J'ai les conditions suivantes :
Si un "ID" contient plusieurs "Puissance", agréger l'ID en sommant les différentes "Puissance" ;
Si il y a plusieurs types de combustibles pour un même "ID", ne garder que le "Combustible" correspondant à la plus grande "Puissance".
Pour le premier j'ai essayé de me lancer avec la commande suivante :
SELECT ID, Sum(Puissance), Combustible
FROM MaTable
GROUP BY ID, Combustible;
ça fonctionne, mais il subsiste tout de même des ID doublons, d'autant plus que du coup, la somme des Puissance est faussée, vu qu'elle existe en double...
Merci de m'aider, l'avenir du canton de Vaud dépend de votre réponse !
Bien à vous...
A voir également:
- Panne requête SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
5 réponses
Salut,
Pour ta première requête, testes ceci :
Le "DISTINCT" devrait ôter les doublons...
Pour ta seconde demande, essaies cette requete :
Pour ta première requête, testes ceci :
SELECT DISTINCT ID, Sum(Puissance), Combustible FROM MaTable GROUP BY ID, Combustible;
Le "DISTINCT" devrait ôter les doublons...
Pour ta seconde demande, essaies cette requete :
SELECT ID, Combustible, MAX(Puissance) FROM MaTable GROUP BY ID, Combustible;
Bonjour,
"Si il y a plusieurs types de combustibles pour un même "ID", ne garder que le "Combustible" correspondant à la plus grande "Puissance". "
Tu es obligé de faire en 2 temps, avec 2 requêtes, une pour sortir les puissances cumulées, une autre pour sortir les types de combustibles à retenir, et dans un 2ème temps, confronter les 2 résultats.
Je te propose:
1) Req1 = SELECT ID, Sum(Puissance) as PuissanceCumul FROM MaTable GROUP BY ID
2) Req2 = SELECT DISTINCT ID, Combustible FROM MaTable
3) Req3 = SELECT Req2.ID, Combustible, PuissanceCumul FROM Req2 LEFT JOIN Req1 on Req2.ID = Req1.ID
Une fois les 3 requêtes enregistrées, il suffit d'ouvrir la dernière pour avoir le résultat final, pas besoin d'ouvrir les 2 1ères. Il faut juste les tester une fois pouur vérifier qu'elles tournent correctement.
Bonne sute (C'était ma modeste participation à la survie du canton de Vaud)
"Si il y a plusieurs types de combustibles pour un même "ID", ne garder que le "Combustible" correspondant à la plus grande "Puissance". "
Tu es obligé de faire en 2 temps, avec 2 requêtes, une pour sortir les puissances cumulées, une autre pour sortir les types de combustibles à retenir, et dans un 2ème temps, confronter les 2 résultats.
Je te propose:
1) Req1 = SELECT ID, Sum(Puissance) as PuissanceCumul FROM MaTable GROUP BY ID
2) Req2 = SELECT DISTINCT ID, Combustible FROM MaTable
3) Req3 = SELECT Req2.ID, Combustible, PuissanceCumul FROM Req2 LEFT JOIN Req1 on Req2.ID = Req1.ID
Une fois les 3 requêtes enregistrées, il suffit d'ouvrir la dernière pour avoir le résultat final, pas besoin d'ouvrir les 2 1ères. Il faut juste les tester une fois pouur vérifier qu'elles tournent correctement.
Bonne sute (C'était ma modeste participation à la survie du canton de Vaud)
Merci à tous pour la précision de vos réponses. Je testerai immédiatement les manipulations citées précédemment une fois au bureau lundi matin, et vous redonnerai des retours.
Bien à vous...
Bien à vous...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour à tous,
Après essai de vos manipulations, je me rends compte que le problème n'est, hélas, pas résolu. Il me reste toujours des doublons.
Le problème vient toujours de la sélection du combustible ayant la plus grande puissance si un ID se répète.
des idées ? Il me faudrait juste cette manipulation et tout serait résolu.
Je vais tenter de faire un schéma succinct mais efficace de ce que je souhaiterais obtenir, histoire que vous ayez une meilleure idée de l'objectif à atteindre :
J'ai, par exemple :
ID | Puissance | Combustible
1 100 Mazout
2 150 Gaz
3 200 Bois
3 300 Mazout
4 20 Solaire
4 100 Fioul
5 100 Mazout
5 500 Gaz
5 40 Solaire
Je souhaite obtenir :
ID | Puissance Totale | Combustible Principal
1 100 Mazout
2 150 Gaz
3 500 Mazout
4 120 Fioul
5 640 Gaz
Je rappelle que :
La puissance totale est la somme de la puissance de toutes les chaudières installées pour un même ID ;
Le combustible principale est le combustible qui génère la plus grande puissance.
Merci par avance de votre coopération...
Après essai de vos manipulations, je me rends compte que le problème n'est, hélas, pas résolu. Il me reste toujours des doublons.
Le problème vient toujours de la sélection du combustible ayant la plus grande puissance si un ID se répète.
des idées ? Il me faudrait juste cette manipulation et tout serait résolu.
Je vais tenter de faire un schéma succinct mais efficace de ce que je souhaiterais obtenir, histoire que vous ayez une meilleure idée de l'objectif à atteindre :
J'ai, par exemple :
ID | Puissance | Combustible
1 100 Mazout
2 150 Gaz
3 200 Bois
3 300 Mazout
4 20 Solaire
4 100 Fioul
5 100 Mazout
5 500 Gaz
5 40 Solaire
Je souhaite obtenir :
ID | Puissance Totale | Combustible Principal
1 100 Mazout
2 150 Gaz
3 500 Mazout
4 120 Fioul
5 640 Gaz
Je rappelle que :
La puissance totale est la somme de la puissance de toutes les chaudières installées pour un même ID ;
Le combustible principale est le combustible qui génère la plus grande puissance.
Merci par avance de votre coopération...