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

Requêtes PostgreSQL Discussion :

Problème requête SELECT [9.5]


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut Problème requête SELECT
    Bonsoir,

    J'ai écrit la requête SQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT produit.codeproduit, produit.libelle, stock.dlc, stock.dluo, stock.dlclimite, stock.dluolimite, stock.lieustockage, stock.poids, stock.quantite, tiers.codetiers, tiers.nomtiers
     FROM produit, stock, tiers
     WHERE codeproduit =  '143007'AND stock.codetiers=tiers.idtiers AND stock.codeproduit=produit.codeproduit
    Mais j'ai des erreurs d'exécution que je n'arrive pas à localiser.

    Merci bien pour votre aide.

  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 801
    Points
    30 801
    Par défaut
    Citation Envoyé par thierrybatlle Voir le message
    j'ai des erreurs d'exécution que je n'arrive pas à localiser.
    Quelles sont ces erreurs ?
    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 actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Bonjour,
    Il me dit simplement que la requête n'a pu s'exécuter à cause d'une erreur. Je n'en sais pas plus.
    Sûrement mes jointures.
    Merci bien

  4. #4
    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 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,
    Si vous avez fidèlement recopié votre requete, alors il manque simplement un espace là où j'ai mis en couleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...WHERE codeproduit =  '143007'AND stock.codetiers=tiers.idtiers AND stock.codeproduit=produit.codeproduit
    Profitez de la correction pour séparer les critères de fitrage (where) de ceux de jointure (join on...)

  5. #5
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Bonsoir,

    Je me pose une question sur la meilleure pratique pour les jointures.

    Est qu'il vaut mieux faire comme je fais là ?

    Ou est qu'il vaut mieux passer par des "INNER JOIN" ?

    A ce moment là comment dois-je réécrire ma requête.

    Merci bien

  6. #6
    Membre expert
    Avatar de alassanediakite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Mali

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 1 599
    Points : 3 590
    Points
    3 590
    Billets dans le blog
    8
    Par défaut
    Salut
    Citation Envoyé par escartefigue Voir le message
    Bonjour,
    Si vous avez fidèlement recopié votre requete, alors il manque simplement un espace là où j'ai mis en couleur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...WHERE codeproduit =  '143007'AND stock.codetiers=tiers.idtiers AND stock.codeproduit=produit.codeproduit
    Je pense plutôt que le problème vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE codeproduit...
    il faut préciser la table de la colonne "codeproduit"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE produit.codeproduit...
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE stock.codeproduit...
    Pour ce qui est des messages d'erreurs; PgAdmin a souvent la peine de les afficher (depuis la version 9.4). Je ne sais pas pourquoi c'est pas encore corrigé. Il faut voir dans le sous dossier pg_log du dossier data pour voir les erreurs.
    @+
    Le monde est trop bien programmé pour être l’œuvre du hasard…
    Mon produit pour la gestion d'école: www.logicoles.com

  7. #7
    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 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par thierrybatlle Voir le message
    Est qu'il vaut mieux faire comme je fais là ?
    Ou est qu'il vaut mieux passer par des "INNER JOIN" ?
    Les deux syntaxes sont acceptées, mais l'utilisation explicite du mot clef JOIN (inner, outer, full) a le mérite de clarifier la requête :
    Ce qui est du ressort du filtrage est dans la WHERE
    Ce qui est du ressort de la jointure est dans le JOIN

    Dans votre cas, la requete devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT pr.codeproduit, 
           pr.libelle, 
           st.dlc, 
           st.dluo, 
           st.dlclimite, 
           st.dluolimite, 
           st.lieustockage, 
           st.poids, 
           st.quantite, 
           ti.codetiers, 
           ti.nomtiers
    FROM produit as PR
    INNER JOIN stock as ST
       ON st.codeproduit=pr.codeproduit
    INNER JOIN tiers as TI
       ON ti.idtiers = st.codetiers
    WHERE PR.codeproduit =  '143007'

  8. #8
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Bonjour,

    Encore merci pour toutes ces informations.

  9. #9
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par thierrybatlle Voir le message
    Bonsoir,

    J'ai écrit la requête SQL suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT produit.codeproduit, produit.libelle, stock.dlc, stock.dluo, stock.dlclimite, stock.dluolimite, stock.lieustockage, stock.poids, stock.quantite, tiers.codetiers, tiers.nomtiers
     FROM produit, stock, tiers
     WHERE codeproduit =  '143007'AND stock.codetiers=tiers.idtiers AND stock.codeproduit=produit.codeproduit
    Mais j'ai des erreurs d'exécution que je n'arrive pas à localiser.

    Merci bien pour votre aide.
    La requête est syntaxiquement correcte mais votre syntaxe est obsolète depuis 33 ans ! En effet, les jointures se font avec l'opérateur JOIN !

    A lire : http://sqlpro.developpez.com/cours/s...ointures/#LIII

    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/ * * * * *

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

Discussions similaires

  1. Problème requête SELECT condition WHERE string
    Par Glherbier dans le forum VBA Access
    Réponses: 3
    Dernier message: 27/10/2010, 18h43
  2. SQL Problème requête SELECT
    Par Seth_75 dans le forum Développement
    Réponses: 2
    Dernier message: 30/03/2009, 15h02
  3. Problème requête SELECT ORACLE
    Par vizlebiz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2008, 16h20
  4. Problème Requête SELECT sur champ texte
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 5
    Dernier message: 02/10/2007, 21h19
  5. [SQL] Problème requête SELECT
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 04/07/2006, 23h54

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