IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Aide pour traduire un "dont" en SQL


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Aide pour traduire un "dont" en SQL
    Bonjour,

    J'ai une question en SQL à laquelle je n'arrive pas à y répondre. La question est : "Afficher le nombre de places disponibles dans chaque classe du vol V9000." (voir sujet ci-joint).
    J'ai réussi à afficher le nombre de places restantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT numvol, (capav-Sum(nbplaces)) AS placesdispo
    FROM vol NATURAL JOIN reservation NATURAL JOIN avion
    GROUP BY numvol, capav
    HAVING (capav-Sum(nbplaces))>0
    ORDER BY numvol;
    Mais je n'arrive pas à "dire en SQL", "il me reste 49 places dispos dont ... en classe ECO et ... en classe AFF" par exemple. J'ai besoin de répondre à cette question pour pouvoir correctement répondre à la question 5 de PL-SQL (voir sujet ci-joint).

    Merci d'avance.

    TP BlueAir PL SQL 2017.pdf

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu peux mettre un CASE dans un SUM pour ne compter que certaines lignes:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select sum(case when Macolonne = 'X' then 1 else 0 end) as masomme
    from...

    Tatayo.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Salut Tatayo,

    D'accord, mais en quoi cela peut m'aider ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Evitez le NATURAL JOIN, c'est la pire des connerie.

    Pour le CASE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SUM(CASE WHEN Classe = 'Affaire' THEN 1 ELSE 0 END) AS NOMBRE_PLACE_AFFAIRE,
    SUM(CASE WHEN Classe = 'Eco' THEN 1 ELSE 0 END) AS NOMBRE_PLACE_ECO
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    @SQLpro > Tu n'aurais pas oublié quelque chose entre le THEN et le ELSE ? Un 1 par exemple ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    @SQLpro > Tu n'aurais pas oublié quelque chose entre le THEN et le ELSE ? Un 1 par exemple ?
    Arg... je suis sur un portable de merde dont le pavé numérique se désactive tout le temps !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    @SQLpro > Merci tout d'abord de votre aide. Cependant, je ne sais pas bien l'utiliser. Voici le code après modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT v.numvol, SUM(CASE WHEN c.nomclasse = 'AFF' THEN 1 ELSE 0 END) AS NOMBRE_PLACE_AFFAIRE,
    SUM(CASE WHEN c.nomclasse = 'ECO' THEN 1 ELSE 0 END) AS NOMBRE_PLACE_ECO
    FROM vol v, reservation r, avion a, classe c
    WHERE a.numav=v.numav
    AND v.numvol=r.numvol
    AND r.numvol=c.numvol
    GROUP BY v.numvol, a.capav
    HAVING (capav-Sum(nbplaces))>0
    ORDER BY v.numvol;
    Je doute de son exactitude. De plus, le résultat est incorrect (voir le résultat ci-dessous). Pourriez-vous encore m'aider ? Merci de votre patience

    (PS : Je vous répond en différé car je travaille sur ce TP pendant mes pauses entre midi à l'établissement. En effet, je ne dispose pas de SQL Tools chez moi...)

    Nom : Capture.PNG
Affichages : 160
Taille : 5,2 Ko

  8. #8
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    La requête ainsi écrite calcule le nombre de réservations (pour chaque classe), mais il semble que chaque réservation puisse concerner plusieurs places...

    Il faut donc modifier le CASE pour bien faire la somme du nombre de places de chaque réservation.

Discussions similaires

  1. Besoin d'aide pour traduire du perl
    Par king_neo2001 dans le forum Langage
    Réponses: 5
    Dernier message: 22/05/2007, 15h10
  2. Besoin d'aide pour traduire un code NASM en MASM
    Par popol03 dans le forum Assembleur
    Réponses: 2
    Dernier message: 21/05/2007, 18h06
  3. Besoin d'aide pour traduire ces quelques lignes
    Par sircus dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2006, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo