Я пытаюсь получить доступ к нужной строке в таблице, чтобы она возвращала правильное имя местоположения, адрес и т. Д. Адрес возвращается правильно, но есть три результата, а не один.Это наши различные международные местоположения.
Либо мои таблицы не нормализованы должным образом, либо я неправильно пишу свой запрос.Я не могу понять, какой.Может быть, немного того и другого.Вот мои таблицы:
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.
Итак, вот мой запрос в CodeIgniter / Active Record (который достаточно легко переводится в стандартный 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();
Но я получаю три результата от этого.Почему, если я использую предложение where в name_url (которое правильно передается в функцию)?Это тип соединения у меня есть?Я попробовал левый и внешний, и это не помогло.
Что я делаю не так?