CodeIgniter Forums
Problème pour lier plusieurs tables dans une requête - Printable Version

+- CodeIgniter Forums (https://forum.codeigniter.com)
+-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20)
+--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forumdisplay.php?fid=23)
+--- Thread: Problème pour lier plusieurs tables dans une requête (/showthread.php?tid=29212)



Problème pour lier plusieurs tables dans une requête - El Forum - 04-02-2010

[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


Problème pour lier plusieurs tables dans une requête - El Forum - 04-02-2010

[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.


Problème pour lier plusieurs tables dans une requête - El Forum - 06-22-2011

[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 ;-) .


Problème pour lier plusieurs tables dans une requête - El Forum - 06-22-2011

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


Problème pour lier plusieurs tables dans une requête - El Forum - 06-22-2011

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