Bases de données SQL et jointures ...

souricou

Habitué
Bonjour,

je veux réaliser une jointure sous MySQL de deux bases. J'effectue la jointure de ces deux bases avec comme condition l'égalité des valeurs d'un attribut des 2 tables, sachant que cet attribut a le même nom dans chacune des 2 tables. La requête échoue et MySQL me dit que 2 colonnes des 2 tables portent le même nom. Il ne devrait pas poser de problème vu que c'est le critère d'égalité et que par conséquent, dans la table finale, cette colonne ne devrait apparaitre qu'une seule fois.

Est-ce que quelqu'un a déjà eu ce problème? Comment le contourner?

Merci, bonne journée
 

souricou

Habitué
[citation=7308,0,2][nom]FMR-Hunter a écrit[/nom]SELECT table1.truc, table2.machin FROM table1, table2 WHERE table1.bidule=table2.bidule[/citation]

Si je fais ça, ce qui revient à faire dans mon cas:

SELECT * FROM j_ldq_l,Proprietaires WHERE j_ldq_l.reflogeur = Proprietaires.reflogeur

MySQL affiche les 2 colonnes reflogueurs (qui sont les même puisque le critere d'égalité est dessus). Donc avec un CREATE devant : ça ne marche plus !!! car 2 colonnes portent le même nom!!!

Une idée ?
 

souricou

Habitué
Car j'ai beaucoup de champs dans mes 2 tables et que j'ai besoin de tous ces champs. J'ai pas envie de taper : table1.champ1,..., table1.champ35, table2.champ1 ... tu vois ?
C'est pour ça en fait.
Je voudrais en quelque sorte faire une sorte de select *{\mon_champ a ne pas prendre en compte}
 

souricou

Habitué
[citation=7320,0,6][nom]FMR-Hunter a écrit[/nom]aaah


heu bah nan je crois pas, sinon c vraiment genant d'avoir les 2 colones afichées ?[/citation]

Oui car je ne peux pas enchainer la requete avec un CREATE TABLE du style :
CREATE TABLE j_p_ldq_l SELECT * FROM j_ldq_l INNER JOIN Proprietaires ON j_ldq_l.reflogeur = Proprietaires.reflogeur"

car la table renvoyée par le SELECT contient 2 colonnes de même nom !!
Surtout que c'est con comme principe, car dans les jointures qu'on a faites en cours, on n'écrivait pas 2 fois la colonne sur laquelle on fait la jointure car c'est la même, c'est le but de la jointure par égalité !!!

Alors bon, j'arrive pas à faire ce que je veux !!
C'est lourd s'il faut supprimer une colonne avant de crééer la table !!!
 

souricou

Habitué
Beh c'est quand même vilain dans une requête PHP de voir 3 lignes de séléction des champs, surtout que sur les 3 tables que je veux joindre, ca va faire ptet 100 champs. C'est pas une toute petite base de données :( sniff

Mais je vais faire ça puisque j'ai pas le choix.
Pourquoi je veux faire un create table? Car je dois m'en servir plusieurs fois et donc plutot que la refaire à chaque fois, je la crée en début de script et apres à la fin je la détruis via un pti drop table.

Voili, voilou.
Merci pour ton aide mais sniff ... ouinnnnnnnnnnnnnnnnnnnnnn
 

RiderCrazy

Nouveau membre
[citation=7324,0,9][nom]souricou a écrit[/nom]Beh c'est quand même vilain dans une requête PHP de voir 3 lignes de séléction des champs, surtout que sur les 3 tables que je veux joindre, ca va faire ptet 100 champs. C'est pas une toute petite base de données :( sniff[/citation] :ouch: "Beh c'est quand même vilain" d'avoir une table de 100 champs [:spamafote]
amha, faut revoir la conception de ta base
 

souricou

Habitué
[citation=7325,0,10][nom]RiderCrazy a écrit[/nom]:ouch: "Beh c'est quand même vilain" d'avoir une table de 100 champs [:spamafote]
amha, faut revoir la conception de ta base[/citation]
J'aimerai bien moi tout refaire, mais c'est pas de moi que ça incombe (et aussi décombe). Car c'est un fichier reçu d'un organisme et là je bosse dans une SSII. C'est leur fichier access qui est tout pourri et que je dois me taper à passer sous MySQL. Alors les requetes imbriquées, les accents dans les tables ... tout ça c'est la fête !!
C'est même pas en 1° forme normale mais je peux pas changer la structure moi. Suis qu'un pti stagiaire !!

 

thrips

Expert
Je ne sais plus si les requètes imbriquées fonctionnent sous MySQL mais cette requète pourrait donner ce que tu recherches si je ne me trompe pas dans la syntaxe

SELECT * FROM j_ldq_l WHERE j_ldq_l.reflogeur IN (SELECT reflogeur FROM Proprietaires)
 

souricou

Habitué
[citation=7328,0,13][nom]ThripS a écrit[/nom]Je ne sais plus si les requètes imbriquées fonctionnent sous MySQL mais cette requète pourrait donner ce que tu recherches si je ne me trompe pas dans la syntaxe

SELECT * FROM j_ldq_l WHERE j_ldq_l.reflogeur IN (SELECT reflogeur FROM Proprietaires)[/citation]

Non elles ne fonctionnent pas.
 

KangOl

Grand Maître
1/ fait un create view, ca vaut mieux et peut etre que lui gere le double nom :o
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 065
Membres
1 586 286
Dernier membre
petitangebleu1977
Partager cette page
Haut