Jointure MySQL...

souricou

Habitué
Bonjour, je ne comprends pas pourquoi lorsqu'on fait une jointure sous MySQL, le champ sur lequel on fait la jointure dans les deux tables est dupliqué.
Par exemple sur la requête suivante :

SELECT *
FROM patient
INNER JOIN soignant ON patient.id_patient = soignant.id_patient
WHERE patient.id_personne =462,


Je trouve dans la table finale 2 Champs id_patient alors que si je fais la jointure avec une égalité de ces champs, c'est que je sais que ça sera les même valeurs !!

Quelqu'un saurait-il comment faire pour ne pas avoir cette duplication qui me semble inutile dans ce cas là ?

Merci bien et bonne journée !
 

souricou

Habitué
Et si dans tes deux tables, tu as 40 champs (tous différents ) par table et que tu ne veux pas la duplication, tu mets les 79 champs dans le SELECT ?
Dans du code PHP c'est moyen de faire une variable pour ça ...

Je pense qu'il doit y avoir un autre moyen ...
 

souricou

Habitué
[citation=7596,0,4][nom]FMR-Hunter a écrit[/nom]:heink: tu te fous de nous ?

http://forum.presence-pc.com/forum2.php?config=presencepc.inc&post=962&cat=9&cache=&sondage=0&owntopic=0&p=1&trash=0&subcat=0[/citation]

Le problème n'a pas été résolu la dernière fois. Et je persiste car mes cours de base de données (pas forcément propres à MySQL) me laissaient entendre que ça ne pose normalement pas de problème c'est pourquoi je voudrais savoir comment ça marche exactement sous MySQL pour faire une fichue requête de jointure de base !!
 

_xav_

Nouveau membre
Salut,

Quand tu fais une requete qui porte sur plusieurs tables (on va en prendre 2), tu fais un produit cartésien des 2 tables. Le produit cartésien te fait une "méga table" qui contient tous les champs des 2 tables - même si il y a des champs commun (car ils sont communs pour toi mais pour le système c'est juste 2 champs).

Si tu fais une requete du type :
[cpp]select *
from clients, connexions
where connexions.id_client = clients.id_client [/cpp]

Et que la structure de la table CLIENTS est :
id_client, login, motdepasse, nom
Et que la strucute de la table CONNEXIONS est :
id_connexion, id_client, date, heure, adresseip, navigateur

Alors le résultat de ta requête sera :
CLIENTS.id_client, login, motdepasse, nom, id_connexion, CONNEXIONS.id_client, date, heure, adresseip, navigateur

MySQL fonctionne comme tous les moteurs de base de données (j'ai essayé sous Access 2000 et sous oracle8i)

@ bientot

XaV
 

thrips

Expert
Au pire à la suite du select, tu fais un "alter table [Nom de la table] drop column [nom de la colonne]"

Je suis pas certain de la syntaxe mais en gros, sa supprime une colonne d'une table.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 136
Messages
6 718 117
Membres
1 586 397
Dernier membre
Chachabidou
Partager cette page
Haut