Получение обоих идентификаторов из внутреннего соединения - PullRequest
0 голосов
/ 16 апреля 2011

Я работаю над веб-сайтом в среде php Codeigniter, и у меня возникают проблемы с объединением таблиц.

Две таблицы - это блюда и рестораны, просто с версиями

meals: id, restaurant_id, price, etc.

restaurants: id, name, location, etc.

Для выполнения запроса я использую следующий код:

$this->db->join('restaurants', 'restaurants.id = meals.restaurant_id');
$query = $this->db->get('meals');

, который возвращает тот же результат, что и при выполнении этого:

$query = $this->db->query('SELECT * FROM meals INNER JOIN restaurants ON restaurants.id = meals.restaurant_id'); 

Проблема заключается в том, что когда я получаю доступ к результату в формеиз массива php или и объекта (предоставленного классом DB codeigniter) возвращается только один идентификатор, идентификатор ресторана, и мне нужен идентификатор еды.Как я могу заставить его выплюнуть идентификатор еды?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2011

У меня нет опыта работы с вашими текущими инструментами (php / codeigniter / etc.), И я предполагаю, что проблема возникает из-за того, что обе таблицы имеют одинаковое имя для столбца "id"? (Обычно это не проблема ... но, может быть, инструменты не справляются с этим правильно?) Что касается SQL-запроса, один из способов различать столбцы с одинаковым именем - использовать псевдонимы в операторе выбора. Вот пример:

select
    m.id as meal_id,
    m.price as meal_price,
    r.id as restaurant_id,
    r.name as restaurant_name,
    r.location as restaurant_location
from meals as m
inner join restaurants as r on r.id = m.restaurant_id
1 голос
/ 16 апреля 2011

попробуйте

SELECT t1.id as mid,t2.id as rid
  FROM table_meals as t1
  inner JOIN table_restaurant as t2 ON t2.id = t1.`restaurant_id`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...