2015-05-04 3 views
-1

У меня есть 3 таблицы.SELECT * из основной таблицы, включая таблицу, связанную с внешним ключом

Table A 
a_id, a_name, a_description, b_id 

Table B 
b_id, b_name, c_id 

Table C 
c_id, c_name (c_name is unique hence no duplicates) 

Таблица «A» имеет внешний ключ «b_id» для таблицы «B». Таблица «B» имеет внешний ключ «c_id» в таблице C

Я хочу, чтобы все строки таблицы «A» (без предложения where). Каждая строка имеет «b_id», поэтому мне также нужна деталь строки этого знака в таблице «B». И подробности строки 'c_id' тоже.

Можете ли вы помочь мне реализовать это в эффективном одиночном запросе? Я использовал три отдельных запроса и слияние результатов в php. Код выглядел сложным. Я знаю, что есть более простой и эффективный способ, так как я только что начал mysql.

Я делаю api, который получает все эти данные и отправляет в мое приложение.

Edit:

  • Я делаю "SELECT *" из таблицы "A"
  • Тогда я итерация массив строк и работает «Выбрать b_name из таблице B, где b_id = a.b_id "
  • затем„Выбрать c_name из таблицы B, где c_id = b.c_id“

Я присоединяемого результат массива в конце концов.

Что мне нужно в результате это * столбцы из таблицы А, 'b_name' из таблицы B и 'c_name' из таблицы С.

+0

что вы пробовали? –

+0

Я отредактировал сообщение –

ответ

0

Если я не ошибаюсь, это может вам помочь. Здесь вам нужно использовать join

Select A.*,B.b_name as b_name,C.c_name as c_name from A left join B on A.b_id = B.b_id left join C on B.c_id = C.c_id 
+0

Thanks. Я понял, что он делает. Как я получу столбцы имен для «B» и «C»? Прямо сейчас я получаю A. * только –

+0

Я обновил свой ответ, вы можете проверить его сейчас –

+0

Большое спасибо. Он работал, но с небольшими изменениями. Мне пришлось удалить «как b_name» и «as c_name». Не могли бы вы объяснить это, чтобы я мог научиться этому? Еще раз спасибо. –

Смежные вопросы