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

SQL Oracle Discussion :

Problème dans une requête


Sujet :

SQL Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Problème dans une requête
    bonjour,
    je suis entrain de developper un mini projet sous netbeans et oracle ,donc pour calculer les salaires des employés j'ai besoin de deux tables employe et salaire ou jai comme champ dans la table employer les coordonnées de chaque employe (nom ,prenom ,ncin,profession,n_cnss) et dans la table salaire j'ai les nbres des heures et les prix des heurs et le mois(lada) et le ncin de chaque employe
    pour clculer le salaire je fais la jointure entre ces deux tables voila ma requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
          String queryString3 = "SELECT ncin,nom,prenom,profession,n_cnss FROM employe E FULL OUTER JOIN salaire S ON E.ncin=S.ncin  WHERE ncin=? and lada=? "; // les ? représentent les emplacements des valeurs qui seront insérées ci-après
    PreparedStatement stm3 = con.prepareStatement(queryString2);
    stm3.setInt(1, alpha); // on insère le paramètre dans le premier ?
    stm3.setString(2, mois); // on insère le paramètre dans le second ?      String queryString3 = "SELECT ncin,nom,prenom,profession,n_cnss FROM employe,salaire WHERE ncin=? and lada=? and employe.ncin=salaire.ncin"; // les ? représentent les emplacements des valeurs qui seront insérées ci-après
    
    ResultSet rst3 = stm3.executeQuery();
    mais lorsque jai essayé de compiler la requete seulement ca me donne comme erreur:java.sql.SQLException: ORA-00918: définition de colonne ambigu
    SVP aider moi
    merci

  2. #2
    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 805
    Points
    30 805
    Par défaut
    Tu ne précises pas dans la clause SELECT quelle est la colonne NCIN que tu souhaites retourner (celle de la table EMPLOYE ou celle de la table SALAIRE).
    Prends l'habitude de toujours qualifier (indiquer le nom de table ou d'alias) toutes les colonnes dans tes requêtes ; déjà tu éviteras ce genre de problème, ensuite ta requête sera plus lisible (même si plus encombrée) parce que tu sauras à la relecture d'où viennent les colonnes mises en oeuvre sans avoir besoin de connaitre la structure des tables.
    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.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    je l'ai changé de cette facon mais toujours la meme erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        SELECT s.nbreheure,s.prixheure,s.nbreheuresupp,s.prixheuresupp,s.avance FROM salaire s INNER JOIN employe e ON e.ncin=s.ncin where ncin=? and lada=?

  4. #4
    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 805
    Points
    30 805
    Par défaut
    Même la clause WHERE est à prendre en compte pour la qualifier les noms de colonne
    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.

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    jai pas compris ta solution SVP aide moi pour trouver la bonne solution comment je peux modifier cette requete ??

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 134
    Points : 84 788
    Points
    84 788
    Billets dans le blog
    15
    Par défaut


    Citation Envoyé par nouna10 Voir le message
    jai pas compris ta solution SVP aide moi pour trouver la bonne solution comment je peux modifier cette requete ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE ncin=? and lada=?
    Comme vous l’a expliqué al1_24 , vous ne précisez pas dans la clause WHERE
    les tables auxquelles appartiennent les champs (colonnes) ncin et lada.

    Vous l’avez bien fait après le SELECT
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Membre éclairé Avatar de bstevy
    Homme Profil pro
    Solutions Architect
    Inscrit en
    Mai 2009
    Messages
    552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Japon

    Informations professionnelles :
    Activité : Solutions Architect
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 552
    Points : 870
    Points
    870
    Par défaut
    tu peux peut-etre essayer un truc comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT	coalesce(E.ncin, S.ncin) as ncin,
    	nom,
    	prenom,
    	profession,
    	n_cnss 
    FROM employe E 
    FULL OUTER JOIN salaire S	ON E.ncin=S.ncin  
    WHERE coalesce(E.ncin, S.ncin)=? 
    and lada=?


    ou encore sur celle la


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT	s.nbreheure,
    	s.prixheure,
    	s.nbreheuresupp,
    	s.prixheuresupp,
    	s.avance 
    FROM salaire s 
    INNER JOIN employe e using (ncin)
    where ncin=? and lada=?

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    salut,
    merci pour votre aide mon problème est résolu j'ai utilisé la 2eme méthode et ça marche très bien maintenant
    mais j'ai une autre question banale mais...
    lorsque j' essaye de remplir la table salaire qui a comme champ ncin,ladate, nbredes heures,pris dheure,nbredes heuressupp,pris dheuresupp,avance le problème est que je ne peut pas insérer 2 ou 3 lignes porte le même ncin mais pour une date différente c'est a dire le salaire d'un employé pour différentes mois comment je pourrai faire ça ???

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    S'il n'est pas possible de créer plusieurs lignes dans la table salaire pour un même employé, c'est qu'un index unique a été créé à tort avec l'identifiant ncin seul.
    Il faut donc altérer cet index pour lui ajouter la colonne "lada"
    j'ose espérer que cette colonne contient aussi l'année, sinon le problème se posera dans un an...

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

Discussions similaires

  1. Problème dans une requête
    Par clettebou dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/10/2006, 19h03
  2. [Factoring_Clause]Problème dans une requête
    Par media dans le forum Oracle
    Réponses: 4
    Dernier message: 30/08/2006, 13h47
  3. [Access] Problème dans une requête SQL avec INNER JOIN ?
    Par bds2006 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/06/2006, 10h57
  4. Problème dans une requête SQL avec AS et ON ?
    Par bds2006 dans le forum Bases de données
    Réponses: 9
    Dernier message: 26/06/2006, 15h25
  5. problème dans une requête
    Par pierrOPSG dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/11/2005, 10h28

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