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 :

Problème avec une instruction OUTER /Postgres


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut Problème avec une instruction OUTER /Postgres
    Bonjour, alors voilà, je suis en stage info, et je dois transcrire une appli faite essenciellement en javascript, html, et des requetes côté server; en php, avec des requete postgres.

    Et là je me trouve avec la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT personne.numen, personne.nomu, personne.prenom, grad.lib_court AS gra_lib, discipline.lib_court AS dis_lib FROM inscrit, personne, OUTER grad, OUTER discipline WHERE inscrit.no_dem = '$no_dem' AND inscrit.co_lieu = '$eta' AND inscrit.numen = personne.numen and personne.co_grad = grad.co_grad and personne.co_disexe = discipline.co_disc ORDER BY nomu, prenom
    qui biensûr ne marche pas

    Le problème se situe au niveau des 2 OUTER

    j'ai essayé pas mal de trucs du style full outer join
    natural full outer join
    cross join

    et y a rien qui marche
    Le server me signal une erreur soit sur full, outer, join, natural, cross comme s'il ne reconnaissait pas ces instructions.

    J'aimerais savoir ce ke je dois écrire à la place.
    Le problème ne vient peut être pas de la syntaxe mais là je vois pas
    Si vous avez besoin de plus d'infos demandez...

    Merci

  2. #2
    Membre du Club

    Profil pro
    Inscrit en
    Février 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 44
    Points : 68
    Points
    68
    Par défaut
    ça fait longtemps que g pas touché à ça mais ya pas un truc style leftjoin et rigthjoin? Sinon essaie de faire ta requete avec l'assistant d'access et recupere le sql généré, ça rends souvent bien des services.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Le problème c ke g du mal à voir ce ké sensé faire OUTER comme ça sans rien et je ne pense pa obtenir le mm résultat avec leftjoin

    Mais g aussi du mal à comprendre pourquoi full join ne marche pas

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT personne.numen, personne.nomu, personne.prenom, 
     grad.lib_court AS gra_lib, discipline.lib_court AS dis_lib 
    FROM inscrit, personne,
     OUTER grad, OUTER discipline 
    WHERE inscrit.no_dem = '$no_dem' AND inscrit.co_lieu = '$eta' AND     inscrit.numen = personne.numen and
     personne.co_grad = grad.co_grad
     and personne.co_disexe = discipline.co_disc ORDER BY nomu, prenom
    En fait les OUTER veulent dire kon garde qd mm la personne selectionner mm si elle a pa de grad et pa de discipline

    Est ce que qq1 c comment on fé ça avec un join ou un truc dans le genre ?

  5. #5
    Membre du Club

    Profil pro
    Inscrit en
    Février 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 44
    Points : 68
    Points
    68
    Par défaut
    si g bien compris tu te prends la tête pour rien, par defaut il t'importe toutes les lignes, que les champs soient remplis ou pas. Met null par defaut dans tes champs grad et discipline, comme ça si ils sont nuls dans les deux table, ta ligne est selectionnée qd meme.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    donc en fait je dois mettre un identifiant bidon dans 'personne' et mettre des NULL dans tous les champs de 'grad' et 'discipline' et de leur mettre l'identifiant correspondant ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Je v faire comme ça mais comme c pas moi ki v gérer la base de données après avoir fini l'appli, il fodré qd mm que je trouve un moyen plus anodin pour celui ki va s'en occuper

    Mais merci c qd mm une bonne idée

  8. #8
    Membre du Club

    Profil pro
    Inscrit en
    Février 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 44
    Points : 68
    Points
    68
    Par défaut
    je comprends pas pourquoi tu veux mettre un identifiant bidon dans personnes, si tu veux selectionner ta personne, c qu'elle existe deja, non? et pour les null, il suffit que tu ajoute dans ta requete de création de la table un DEFAULT=null sur grade et sur discipline . Je suis pas sur de bien comprendre ce que tu veux faire...

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    Excuse je m'étais mal expliké
    je voulé mettre une valeur bidon dans co_grad et co_disexe de 'personne' (valeurs reportées dans co_grad et co_disc de 'grad' et 'discipline')pour correspondre avec les tables correspondantes remplies de valeur NULL

    Et cela pour les personne ki n'ont pas de grad et pas de discipline

  10. #10
    Membre du Club

    Profil pro
    Inscrit en
    Février 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 44
    Points : 68
    Points
    68
    Par défaut
    je comprends tjrs pas, si tu met un default=null sur tous les champs de toutes les tables, ça le fait non?

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    G du mal à voir ce ke va engendré un default = NULL de partout et c ss doute pour ça ke je di d conneries

  12. #12
    Membre du Club

    Profil pro
    Inscrit en
    Février 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 44
    Points : 68
    Points
    68
    Par défaut
    ben en fait ça mettra juste "null" dans tes champs si tu ne les renseignes pas... ca peut te faire des emmerdes à l'affichage(ça t'écrira null si tu affiche ton champ), mais tu peux resoudre ce pb avec des if=null...

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    En fait ce ke je pensé, c ke si on met tt à null, qd je v chercher les personne avec co_grad=grad.co_grad,
    et que la personne X n'a pas de grad,
    X ne sera pas affiché (ce ke moi je voudré)

    Pense tu ke le fait que personne.co_grad=null et grad.co_grad=null
    va me permettre un affichage ?

    Si c le k, alors g compris ce ke tu me propose et mon problème sera presque résolu

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    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
    18
    19
    20
    SELECT	personne.numen, 
    	personne.nomu, 
    	personne.prenom, 
    	grad.lib_court AS gra_lib, 
    	discipline.lib_court AS dis_lib
     
    FROM	inscrit,
    	personne,
    	personne left outer join grad,
    	personne left outer join discipline
     
    WHERE	inscrit.no_dem = '$no_dem' 
    	AND inscrit.co_lieu = '$eta' 
    	AND inscrit.numen = personne.numen
    	AND personne.co_grad = grad.co_grad 
    	AND personne.co_disexe = discipline.co_disc 
     
    ORDER BY
    	nomu, 
    	prenom";
    Est ce que ce genre de requete pourrait marcher si je désire ne pas toucher aux tables existantes ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut
    C bon g mis ça :

    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
    18
    19
    20
    21
     
    SELECT	personne.numen, 
    	personne.nomu, 
    	personne.prenom, 
    	grad.lib_court AS gra_lib, 
    	discipline.lib_court AS dis_lib
     
    FROM	inscrit,
    	personne 
    	left outer join grad 
    		on personne.co_grad = grad.co_grad
    	left outer join discipline 
    		on personne.co_disexe = discipline.co_disc 
     
    WHERE	inscrit.no_dem = '$no_dem' 
    	AND inscrit.co_lieu = '$eta' 
    	AND inscrit.numen = personne.numen
     
    ORDER BY
    	nomu, 
    	prenom
    Et ça marche

    Merci
    @+

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

Discussions similaires

  1. Problème avec une instruction if
    Par tarmo57 dans le forum Débuter
    Réponses: 3
    Dernier message: 29/08/2008, 20h42
  2. Problème avec une instruction VBA
    Par Jpeg69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/05/2007, 12h58
  3. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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