Requete SQL
pulls
Messages postés
136
Date d'inscription
Statut
Membre
Dernière intervention
-
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Reivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'ai une table qui se présente comme suit:
Date N° vente Vendeur produit1 produit2 produit3 total
01/01/2014 1 M10100 5 000 3 000 2 000 10 000
01/01/2014 1000 M10100 1500 2500 0 4 000
01/01/2014 500 M10100 700 200 0 900
01/01/2014 1 M10200 4 000 2 000 1 000 7 000
01/01/2014 1000 M10200 2500 3500 0 6 000
01/01/2014 500 M10200 1700 1200 0 2 900
02/01/2014 2 M10100 6 000 4 000 3 000 13 000
02/01/2014 1001 M10100 2500 3500 0 6 000
02/01/2014 501 M10100 1700 1200 0 2 900
02/01/2014 2 M10200 5 000 3 000 2 000 10 000
02/01/2014 1001 M10200 3500 4500 0 8 000
02/01/2014 501 M10200 2700 2200 0 4 900
Je dois regrouper les ventes de produit1 et produit2 en V1 ( vente du jour) et V2 ( vente de la nuit) suivant les critères suivants:
- les n° de vente de 1 à 499 represente les ventes de produit1, produit2 de couleur rouge en V1
- les n° de vente supérieur à 1000 représentent les ventes de produit1 et produit2 de couleur verte toujours en V1
- Enfin les n° de vente de 500 à 999 représente les ventes de produit1 et produits2 en nocturne toute couleur confondue comme V2
Nous remarquons que le produit3 n'est pas concerné par le regroupement en V1 et V2 et se trouve dans la plage de n° de vente de 1 à 499.
Je voudrais construire requête SQL avec php pour avoir le résultat suivant:
Date Vendeur V1 V2 produit3 Total
01/01/2014 M10100 12 000 900 2 000 14 900
01/01/2014 M10200 12 000 2900 1 000 15 900
02/01/2014 M10100 16 000 2900 3 000 21 900
02/01/2014 M10200 16 000 4900 2 000 22 900
Je ne sais pas si je me suis fait comprendre, je n'ai pas pu trouver une solution de requête, aidez moi.
Excusez moi de la mise en page du tableau, j'espère que le gras vous permettra de distinguer les colonnes
Cordialement
j'ai une table qui se présente comme suit:
Date N° vente Vendeur produit1 produit2 produit3 total
01/01/2014 1 M10100 5 000 3 000 2 000 10 000
01/01/2014 1000 M10100 1500 2500 0 4 000
01/01/2014 500 M10100 700 200 0 900
01/01/2014 1 M10200 4 000 2 000 1 000 7 000
01/01/2014 1000 M10200 2500 3500 0 6 000
01/01/2014 500 M10200 1700 1200 0 2 900
02/01/2014 2 M10100 6 000 4 000 3 000 13 000
02/01/2014 1001 M10100 2500 3500 0 6 000
02/01/2014 501 M10100 1700 1200 0 2 900
02/01/2014 2 M10200 5 000 3 000 2 000 10 000
02/01/2014 1001 M10200 3500 4500 0 8 000
02/01/2014 501 M10200 2700 2200 0 4 900
Je dois regrouper les ventes de produit1 et produit2 en V1 ( vente du jour) et V2 ( vente de la nuit) suivant les critères suivants:
- les n° de vente de 1 à 499 represente les ventes de produit1, produit2 de couleur rouge en V1
- les n° de vente supérieur à 1000 représentent les ventes de produit1 et produit2 de couleur verte toujours en V1
- Enfin les n° de vente de 500 à 999 représente les ventes de produit1 et produits2 en nocturne toute couleur confondue comme V2
Nous remarquons que le produit3 n'est pas concerné par le regroupement en V1 et V2 et se trouve dans la plage de n° de vente de 1 à 499.
Je voudrais construire requête SQL avec php pour avoir le résultat suivant:
Date Vendeur V1 V2 produit3 Total
01/01/2014 M10100 12 000 900 2 000 14 900
01/01/2014 M10200 12 000 2900 1 000 15 900
02/01/2014 M10100 16 000 2900 3 000 21 900
02/01/2014 M10200 16 000 4900 2 000 22 900
Je ne sais pas si je me suis fait comprendre, je n'ai pas pu trouver une solution de requête, aidez moi.
Excusez moi de la mise en page du tableau, j'espère que le gras vous permettra de distinguer les colonnes
Cordialement
A voir également:
- Requete 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
6 réponses
Salut,
On ne va pas faire l'exercice à ta place, à lire : Demander de l'aide pour vos exercices sur CCM. Tu peu apprendre SQL dans un livre ou ici par exemple : Cours SQL.
On ne va pas faire l'exercice à ta place, à lire : Demander de l'aide pour vos exercices sur CCM. Tu peu apprendre SQL dans un livre ou ici par exemple : Cours SQL.
Merci Célien de vouloir m'aider.
J'ai bien lu mon cours SQL et j'ai déjà developpé des applications avec des requetes SQL, mais je n'ai pas encore rencontré ce cas de figure .
Voici ce que j'ai essayé de faire :
Comment fusionner ces 2 requetes pour avoir un seul résultat, avec les champs date, vendeur, V1,V2,produit3, Total(V1+V2+produit3) ?
S'il vous plait aidez moi, depuis plusieurs jours , je réfléchis sans suite.
merci
J'ai bien lu mon cours SQL et j'ai déjà developpé des applications avec des requetes SQL, mais je n'ai pas encore rencontré ce cas de figure .
Voici ce que j'ai essayé de faire :
SELECT date, vendeur, (SUM(produit1)+SUM(produit2)) as V1, produit3 FROM tab1 where n°_vente between 1 and 499 and N°_vente>1000 group by date,vendeur
SELECT date, vendeur , (SUM(produit1)+SUM(produit2)) as V2, produit3 FROM tab1 where n°_vente between 500 and 999 group by date,vendeur
Comment fusionner ces 2 requetes pour avoir un seul résultat, avec les champs date, vendeur, V1,V2,produit3, Total(V1+V2+produit3) ?
S'il vous plait aidez moi, depuis plusieurs jours , je réfléchis sans suite.
merci
S'il vous plait , est ce qu'on peut faire un UNION sur la même table, est ce que un vendeur ne doit pas apparaitre 2 fois à la même date alors que je veux les grouper.
cordialement
cordialement
J'ai essayé ceci:
Mais ça me renvoit une erreur de syntaxe: #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 'as V1 when course between 500 and 999 then SUM(prod1)+SUM(prod2) a' at line 4
cordialement
select date,vendeur,prod3,
case
when (course between 1 and 499 ) or (course >1000)
then SUM(prod1)+SUM(prod2) as V1
when course between 500 and 999
then SUM(prod1)+SUM(prod2) as V2
FROM tab1 group by date,vendeur
Mais ça me renvoit une erreur de syntaxe: #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 'as V1 when course between 500 and 999 then SUM(prod1)+SUM(prod2) a' at line 4
cordialement
Bonjour,
Tu n'es pas loin.
Essaie ça :
Tu n'es pas loin.
Essaie ça :
select date, vendeur, SUM(produit3) as produit3, SUM( case when (course between 1 and 499 ) or (course >1000) then produit1 + produit2 else 0 end) as V1, SUM( case when course between 500 and 999 then produit1 + produit2 else 0 end) as V2, SUM(produit1 + produit2 + produit3) as total FROM tab1 group by date,vendeur
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
S'il vous plait, je crois que je suis à un pas d'avoir le bon résultat en procédant ainsi car je suis sur MYSQL:
Le champ V1 se calcule bien, mais le champ V2 affiche plutot 0, je ne comprends pas pourquoi.
Si vous avez une expérience dessus, aidez moi pour que je puisse avancer
Merci
select date,vendeur,prod3,
IF ((course < 499 ) or (course >1000),SUM(prod1)+SUM(prod2),0) as V1,
IF((course between 500 and 999),SUM(prod1)+SUM(prod2),0) as V2
from tab1 group by date,vendeur
Le champ V1 se calcule bien, mais le champ V2 affiche plutot 0, je ne comprends pas pourquoi.
Si vous avez une expérience dessus, aidez moi pour que je puisse avancer
Merci
Merci Reivax962,
ça marche, je te remercie infiniment. S'il te plait, je ne comprends pas bien la position de SUM devant CASE, alors qu'après THEN , on doit faire une addition.
Cordialement
ça marche, je te remercie infiniment. S'il te plait, je ne comprends pas bien la position de SUM devant CASE, alors qu'après THEN , on doit faire une addition.
Cordialement
Pour bien comprendre, exécute cette requête sans les SUM ni le group by, et compare le résultat :
select date, vendeur, produit3, case when (course between 1 and 499 ) or (course >1000) then produit1 + produit2 else 0 end as V1, case when course between 500 and 999 then produit1 + produit2 else 0 end as V2, produit1 + produit2 + produit3 as total FROM tab1