Requête

Résolu/Fermé
fachiwowo Messages postés 4 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 13 mars 2019 - Modifié le 13 mars 2019 à 15:21
fachiwowo Messages postés 4 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 13 mars 2019 - 13 mars 2019 à 17:43
Bonjour à tous , je suis débutante en SQL , j'aimerai faire une requête qui me permet d'effectuer ces conditions:
table Personne( nom, prenom, mail, password, Age, Num)

si la personne a moins de 26 ans et fait partie des 5 premiers arrivant, alors ' reduction 30%'
si la personne a moins de 26 ans mais ne fait pas partie des 5 p arrivant, alors ' reduction 10%"
si la personne a plus de 25 ans , bah elle n'aura pas de message

merci de m'aider svp


Configuration: Windows / Chrome 72.0.3626.121

1 réponse

jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
13 mars 2019 à 15:46
Bonjour,

Il y a pleins de façons de faire....

Déjà.. pour la vérification de l'age.. tu peux utiliser un IF ou un CASE WHEN

Pour ce qui est de la "position"... après avoir appliqué un ORDER BY sur la colonne voulue.. tu peux utiliser un petit bout de code pour connaitre la "ligne" https://www.mysqltutorial.org/mysql-tips/mysql-row_number-emulation/

Ou simplement utiliser la clause LIMIT ; OFFSET et un UNION pour créer tes différents "niveaux"


Au passage :
https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/

.


0
fachiwowo Messages postés 4 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 13 mars 2019
Modifié le 13 mars 2019 à 16:21
Merci pour ta reponse

J'ai appliqué ceci sur la table Personne( nom, prenom, mail, password, Age, Num)

SELECT *
FROM personne
CASE
WHEN age <26 THEN 'felicitation vous beneficiez de -30%'
ORDER BY personne
LIMIT 5
WHEN age <26 THEN 'felicitation vous beneficiez de -10%'
END
Mais ceci ne marche pas
et aussi quelle condition dois je mettre pour les plus de 25ans qui n'auront pas de message concernant les réductions
merci
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649
13 mars 2019 à 17:02
le case when, dans ton cas, est à mettre dans le SELECT .... pas après le FROM (je voudrais bien savoir d'où tu as pu sortir ça d'ailleurs... ça n'existe pas ! )
0
fachiwowo Messages postés 4 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 13 mars 2019
Modifié le 13 mars 2019 à 17:25
est ce possible que vous corrigez ma requete svp?

bah d'habitude je mets FROM ..... puis WHERE ... et je pensais que ca doit être dans tous les requêtesSQL
( j'ai fait cette condition en php , mon prof veut que ca soit sur SQL et je suis pas forte en requete
merci de m'aider
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 649 > fachiwowo Messages postés 4 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 13 mars 2019
13 mars 2019 à 17:29
Je t'ai indiqué où le mettre ....
sur 10 lignes.. ce n'est pourtant pas trop compliqué...

ça devrait donner un truc du genre
SELECT P.* 
          ,IF(P.age <26  AND P.num <6 ,'felicitation vous beneficiez de -30%' ,IF(P.age <26 , 'felicitation vous beneficiez de -10%' , '' )) as REDUC
FROM personne  P


0
fachiwowo Messages postés 4 Date d'inscription mercredi 13 mars 2019 Statut Membre Dernière intervention 13 mars 2019
13 mars 2019 à 17:43
enfin ca marche marche ,

merci beaucoup .
0