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 :

Requete avec ISNULL


Sujet :

Langage SQL

  1. #1
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut Requete avec ISNULL
    Bonjour,
    Je cherche à formuler le salaire annuel d'employés qui pour certains touchent une commission annuelle

    J'ai une table employés ("emp") qui contient entre autres les champs : nom, comm, salaire
    Je commets une erreur de syntaxe que je n'arrive pas à identifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nom, salaire*12+ISNULL(comm,0) 
    FROM emp;

    Merci pour votre aide

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 218
    Points : 28 169
    Points
    28 169
    Par défaut
    Salut,

    Tu utilise quel moteur de base de données ? Si je me trompe pas ISNULL est propre à SQLServer

    Sinon, tu peux essayer avec la fonction coalesce à la place.

  3. #3
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Merci pour ton retour

    Je suis sous oracle, je pensais que ISNULL était utilisé.
    Sinon j'ai une erreur de syntaxe sur celle-ci à cause du LIMIT.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT n_dept, SUM(salaire) AS Somme_Salaires
    FROM emp
    GROUP BY n_dept
    ORDER BY Somme_Salaires DESC
    LIMIT 1;
    Merci encore

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    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 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Bonjour,
    Quelle version d'Oracle ? D'après une rapide recherche, il semble que LIMIT en soit disponible qu'à partir de la version 12.1.
    Avec une version plus ancienne il faut utiliser FETCH.

    Tatayo.

  5. #5
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Tatayo,

    Effectivement je possède la version 11g pour mon TP.
    J'ai tenté plusieurs syntaxes comme :
    FETCH 1
    FETCH FIRST 1 ROWS ONLY;
    FETCH NEXT 1 ROWS
    FETCH FIRST 1 ROW

    Rien n'y fait. Probablement que ma requête est mal rédigée...
    Merci quand même pour cette précision que j'ignorais

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 240
    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 240
    Points : 12 872
    Points
    12 872
    Par défaut
    Là tu ne nous donnes pas assez d'infos.
    Rien n'y fait ? Mais encore ? Un message d'erreur ? la requête renvoie les mauvaises lignes, aucune ligne ?
    Avec une petite recherche, la bonne syntaxe serait :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FETCH NEXT 1 ROWS ONLY
    Visiblement tu n'étais pas loin

    Tatayo.

  7. #7
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Re,

    Oui, c'est vrai je n'ai pas donné beaucoup d'infos, merci encore pour ton retour. Du coup je viens de tester et cela ne fonctionne pas, à savoir
    que ma requête retourne directement un message d'erreur sans aucune réponse.
    Le rapport d'erreur m'indique que la commande SQL se termine de façon inappropriée (traduction aléatoire faite par moi-même). Le voici dans son intégralité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Erreur à la ligne de commande: 129 Colonne: 1
    Rapport d'erreur -
    Erreur SQL : ORA-00933: SQL command not properly ended
    00933. 00000 -  "SQL command not properly ended"
    *Cause:    
    *Action:
    Pour mieux détailler encore voici la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE emp(
    	num INT,
    	nom VARCHAR2(50) NOT NULL,
    	fonction VARCHAR2(30) NOT NULL,
    	n_sup INT,
    	embauche DATE NOT NULL,
    	salaire NUMBER(14,2) NOT NULL,
    	comm NUMBER(14,2),
    	n_dept INT,
    	CONSTRAINT PK_EMP PRIMARY KEY(num),
    	CONSTRAINT FK_EMP_SUP FOREIGN KEY (n_sup) REFERENCES emp(num),
    	CONSTRAINT FK_EMP_DEPT FOREIGN KEY (n_dept) REFERENCES dept(n_dept)
    );

    Bien à toi

  8. #8
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 776
    Points : 1 488
    Points
    1 488
    Par défaut
    Et ça c'est mieux ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM (SELECT n_dept, SUM(salaire) AS Somme_Salaires
    		FROM emp
    		GROUP BY n_dept
    		ORDER BY Somme_Salaires DESC
    	  ) T
    WHERE rownum < 2;

  9. #9
    Membre averti
    Homme Profil pro
    Reconversion
    Inscrit en
    Novembre 2018
    Messages
    502
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Reconversion
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2018
    Messages : 502
    Points : 300
    Points
    300
    Par défaut
    Bonjour Michel,

    En effet cela fonctionne, merci pour ton intervention.
    Cela étant, je ne comprends pas encore bien l'imbrication des requêtes et la notion de sous requête, ou du moins leur rédaction.

    A travailler, je ne rendrai pas ton résultat car je ne l'aurais jamais trouvé seul. J'attendrai d'en discuter avec mon prof si je ne comprends pas d'ici là.
    (j'ai 4 jours pour y arriver !

    Merci encore à tous pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. requete avec la valeur NULL
    Par Hinkel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/11/2008, 16h39
  2. requete avec OBCD et visual c++
    Par Anonymous dans le forum MFC
    Réponses: 12
    Dernier message: 18/11/2004, 16h15
  3. Pb d'execution de requete avec un script php
    Par ythierrin dans le forum Requêtes
    Réponses: 3
    Dernier message: 22/08/2003, 14h34
  4. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54
  5. Requete avec des décimales
    Par Sandrine75 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/06/2003, 10h18

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