私がしようとしているのは、適切な場所名、住所などを返すように、テーブルの適切な行にアクセスすることです。アドレスは正しく返されますが、3つの結果があります1つではなくこれらは私たちの様々な国際的な場所です。適切なクエリまたは適切な正規化:MySQL
テーブルが正規化されていないか、クエリが正しく書かれていません。私はどれを把握することができません。おそらく両方の少し。ここに私のテーブルがあります:
DEALERS TABLE:
channel_partner_id company
------------------ --------
626 Company Inc.
626 Company GmBH
626 Company Ltd.
DEALERS_LOCATIONS TABLE:
channel_partner_id location_id
------------------ -----------
626 18
626 19
626 20
LOCATIONS TABLE:
location_id address name_url
---------- -------------------- -------
18 1234 Anywhere St. anywhere-st
19 3245 Nowhere St. nowhere-st
20 90 Everywhere St. everywhere-st
私はそれらをname_urlに参加させたいと思います。
だからここに(簡単に十分な標準のMySQLに翻訳された)CodeIgniterの/ Active Recordの中の私のクエリです:
$this->db->where('l.name_url', $name_url);
$this->db->join('all_dealers_locations dl', 'dl.channel_partner_id = d.channel_partner_id', 'inner');
$this->db->join('all_locations l', 'l.location_id = dl.location_id', 'inner');
$row = $this->db->get('all_dealers d')->row();
しかし、私はこれから戻って3つの結果を得ることができます。なぜ、関数に正しく渡されているname_urlのwhere節を使用しているのですか?それは私が持っている結合のタイプですか?私は左と外側を試みたが、それは助けにはならなかった。
私は間違っていますか?
この例のデータでは、3つのディーラーのすべてが同じパートナーIDを持ち、すべての3つのロケーションにマッピングされています。だから、あなたが参加している場所に関係なく、3つのディーラー= 3行すべてが得られます。 –
私は知っていますが、私もすべての場所のクエリを行うことができる必要がありますか?彼らがユニークなIDを持っているなら、どのように私は与えられたチャネルパートナーのすべての場所を得るのですか? – sehummel
あなたは「name_urlに参加したい」と言っていますが、あなたの質問はそうではないようです。 ??? –