我想要做的是訪問表中正確的行,以便它返回正確的位置名稱,地址等。地址是正確返回,但有三個結果而不是一個。這些是我們的各個國際地點。適當的查詢或適當的規範化: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很容易的):
$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();
但我回來從這三個結果。爲什麼,如果我使用name_url的where子句(正在正確傳遞給函數)?它是我有的加入類型嗎?我嘗試了左側和外側,並沒有幫助。
我在做什麼錯?
在您擁有的示例數據中,所有3個經銷商都有相同的合作伙伴ID,它映射到所有3個位置。所以,不管你加入哪個地點,你都會得到所有3個經銷商= 3排。 – 2012-04-02 23:16:24
我知道,但我也需要能夠對所有位置進行查詢?如果他們有唯一的ID,那麼如何獲得給定渠道合作伙伴的所有地點? – sehummel 2012-04-02 23:17:11
你說你「想加入他們的name_url」,但你的查詢似乎並沒有這樣做。 ??? – 2012-04-03 00:21:27