Welcome Guest, Not a member yet? Register   Sign In
Problème pour lier plusieurs tables dans une requête
#1

[eluser]caperquy[/eluser]
Dans mon application je dispose des trois tables suivantes :
1-codes_postaux avec une clé unique nommée code_cp
2-paroisses avec une clé unique code_paroisse et un champ code_cp qui permet une liaison à la table précédente
3-rues avec une clé unique code_rue et une clé code_par qui permet une liaison à la table précédente
Je voudrais créer une requête basée su les liens suivants :
table codes_postaux/table paroisses reliées par le champ code_cp
et table paroisses/table rues liées par les champs code_paroisse/code_par
J'utilise le code suivant :
$this->db->select('nom_paroisse, ville, nom_rue, pair, impair');
$this->db->from('codes_postaux');
$this->db->where('codes_postaux.code_cp',$codecp);
$this->db->join('paroisses','codes_postaux.code_cp = paroisses.code_cp');
$this->db->join('rues','paroisses.code_cp = rues.code_par');
$query=$this->db->get();
En résultat j'obtiens plusieurs réponses en double. Merci à qui pourra me dire quelle erreur je commets.
Merci d'avance
#2

[eluser]aidehua[/eluser]
I've not got an answer, but here's an English translation that might open up the field of possible helpers....
--



PROBLEM LINKING SEVERAL TABLES IN A SINGLE QUERY

In my application I have the following three tables:

1. "codes_postaux", with a primary key called "code_cp".

2. "paroisses", with a primary key "code_paroisse" and a foreign key field "code_cp", allowing a join to the table above ("codes_postaux").

3. "rues", with a primary key called "code_rue" and a foreign key "code_par", allowing a join to the table above ("paroisses").

I want to write a query based on the following joins:

Tables "codes_postaux" and table "paroisses" joined by "code_cp", and
the table "paroisses" and table "rues" joined by the "code_paroisse"/"code_par".

I'm using the following code:

Code:
$this->db->select(‘nom_paroisse, ville, nom_rue, pair, impair’);
$this->db->from(‘codes_postaux’);
$this->db->where(‘codes_postaux.code_cp’,$codecp);
$this->db->join(‘paroisses’,‘codes_postaux.code_cp =  paroisses.code_cp’);
$this->db->join(‘rues’,‘paroisses.code_cp =  rues.code_par’);
$query=$this->db->get();

But this is giving me several duplicate results. I'd be grateful to anyone who can tell me what I'm doing wrong.

Thanks in advance.
#3

[eluser]Dexyne[/eluser]
Je pense qu'il faut que tu modifies la ou les jointures en ajoutant 'left' ou 'right comme 3ème argument.

Code:
$this->db->select(‘nom_paroisse, ville, nom_rue, pair, impair’);
$this->db->from(‘codes_postaux’);
$this->db->where(‘codes_postaux.code_cp’,$codecp);
$this->db->join(‘paroisses’,‘codes_postaux.code_cp =  paroisses.code_cp’, 'left');
$this->db->join(‘rues’,‘paroisses.code_cp =  rues.code_par’, 'left');
$query=$this->db->get();

Si 'left' ne change rien essaye 'right' et vois si il est nécessaire de le mettre pour les 2 jointures ou seulement l'une des deux ;-) .
#4

[eluser]caperquy[/eluser]
Merci pour la réponse. J'avais finalement trouvé une solution du même type.
Caperquy
#5

[eluser]Dexyne[/eluser]
Ok ^^.




Theme © iAndrew 2016 - Forum software by © MyBB