#1 Wed 04 July 2018 11:40
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
jointure table pgadmin
Bonjour,
j'ai créée deux tables dans un même schéma dans pgadmin, et j'ai relié ces tables par une clef étrangère.
Or quand je fais une sélection du type
SELECT * FROM table1, table2
JOIN table1
ON table1.id=table2.id ;
j'obtiens le message d'erreur suivant :
ERROR: relation "table1" does not exist
LINE 1: SELECT * FROM table1, table2
^
SQL state: 42P01
Character: 15
Je n'arrive pas à m'en sortir, ....
Une idée ?
merci d'avance
Hors ligne
#2 Wed 04 July 2018 12:14
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 320
Re: jointure table pgadmin
Je pense qu'il cherche dans le schéma "public" vu que le schéma n'est pas précisé.
Essaye de mettre schema.table1, schema.table2
Hors ligne
#3 Wed 04 July 2018 12:21
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
Re: jointure table pgadmin
Merci pour l'aide, je viens de tester mais ça ne fonctionne pas non plus ...
Hors ligne
#4 Wed 04 July 2018 13:39
Re: jointure table pgadmin
Bonjour,
Pour savoir dans quel schéma se trouve table1 :
Code:
select * from pg_tables where tablename = 'table1'
Pour savoir dans quels schémas se fait la recherche :
Code:
show search_path
Jean-Marie
Azimut
Hors ligne
#5 Wed 04 July 2018 14:08
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
Re: jointure table pgadmin
Merci pour ces infos jmarsac
en effet quand je teste les deux codes, les schémas résultants sont différents.
Comment est-il possible d'indiquer à pgadmin d'effectuer la recherche dans le schéma où sont situées mes tables ?
quand j'indique le schéma avant le nom des tables sous la forme schema.table1 ou 2 comme dit précédent, cela ne fonctionne pas ...
Hors ligne
#6 Wed 04 July 2018 14:50
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: jointure table pgadmin
Bonjour,
Attention a votre requete !
FROM table1, table2
JOIN table1
Vous allez faire une jointure ET un produit cartésien entre les tables (toutes les lignes de table1 x toutes les lignes de table2 et une jointure)
Si les tables sont un tout petit peu volumineuses, la requete ne finira jamais, ou va remplir le disque, etc.
Avez-vous mis des majuscules, accents ou caractères spéciaux dans le nom des tables ?
Si c'est le cas, il faut les appeler en mettant des guillemets:
select * from "Table1";
Comme le dit jmarsac, la variable search_path contient les schémas à chercher par défaut quand on ne qualifie pas les noms de tables.
Mais je vous recommande fortement d'ecrire vos requetes avec les noms qualifiées: schema.table.
quand j'indique le schéma avant le nom des tables sous la forme schema.table1 ou 2 comme dit précédent, cela ne fonctionne pas ...
Si la table est est bien dans le schéma "schema" et que vous mettez des guillemets autour du nom de la table si celle-ci contient des caractères spéciaux, c'est pas trop possible que ca ne marche pas.
Apres peuvent se poser des pb de droits d'accès à la table, mais c'est différent de l'existence de la table.
Hors ligne
#7 Wed 04 July 2018 15:02
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
Re: jointure table pgadmin
Merci pour la réponse
j'ai testé en mettant des guillemets et cela ne fonctionne toujours pas ...
mes noms de tables ne possèdent pas de caractères spéciaux ni de majuscules par contre le nom du schéma contient des majuscules (ce n'est pas moi qui l'ai créée) est ce que le problème peut venir de là ?
Hors ligne
#8 Wed 04 July 2018 15:07
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: jointure table pgadmin
Oui, le probleme vient de là.
Il faut mettre des guillemets autour du nom du schema.
Nicolas
Hors ligne
#9 Wed 04 July 2018 15:37
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
Re: jointure table pgadmin
j'ai essayé et je me retrouve donc avec la formule suivante :
SELECT * FROM "schema".table1, "schema".table2
JOIN "schema".table1
ON table1.id=table2.id ;
j'ai toujours un message d'erreur mais celui-ci a changé :
ERROR: table name "table1" specified more than once
SQL state: 42712
une idée ? désolée, je suis débutante ...
Hors ligne
#10 Wed 04 July 2018 15:43
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
Re: jointure table pgadmin
Je viens de résoudre mon problème, tout fonctionne à merveille ! merci à tous pour vos conseils
Hors ligne
#11 Wed 04 July 2018 17:50
- tevrard
- Participant assidu
- Date d'inscription: 23 May 2016
- Messages: 320
Re: jointure table pgadmin
Je viens de résoudre mon problème, tout fonctionne à merveille ! merci à tous pour vos conseils
SI il est possible de toi de poster la solution à ton problème, cela serait apprécié
Notamment pour ceux qui ont tenté de te répondre et surtout les futurs lecteurs qui tomberont sur ce topic
Hors ligne
#12 Wed 04 July 2018 17:58
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: jointure table pgadmin
Notez comme les messages d'erreur de postgresql sont clairs:
ERROR: table name "table1" specified more than once
SQL state: 42712
Et effectivement dans votre requete, la table table1 était nommée deux fois dans la clause FROM.
Nicolas
Hors ligne
#13 Thu 05 July 2018 08:22
- géoflo
- Participant occasionnel
- Date d'inscription: 30 May 2018
- Messages: 11
Re: jointure table pgadmin
Voilà la requête que j'ai tapé et qui a fonctionné :
SELECT * FROM "schema".table1
JOIN "schema".table2
ON table2.id=table1.id ;
merci de votre aide !
Hors ligne