Итак, у меня есть таблица категорий. Внутри этой таблицы есть поле "id", "name", "fk_parent_cat_id" (и многое другое). "Fk_parent_cat_id" в основном привязывает только одну категорию к родительской категории.
Ok. При этом, как я могу сделать запрос, который захватывает информацию о категории, но ТАКЖЕ захватывает информацию о родительской категории. Моя основная забота заключается в том, что сейчас я просто хватаю родительский идентификатор, что приятно, но я не хочу запускать другой запрос для определения имени родительской категории.
Обычный результат запроса будет выглядеть примерно так:
id: 2
name: category 1
fk_parent_cat_id: 1
И я хочу, чтобы результат был
id: 2
name: category 1
fk_parent_cat_id: 1
fk_parent_cat_name: top category
Имеет ли смысл этот вопрос? Я полагаю, что есть способ сделать это с каким-то соединением...
Спасибо за любой inptut!
Вы можете выполнить это с помощью INNER JOIN. Просто убедитесь, что имена ваших таблиц и столбцов внешнего ключа - это то, что они на самом деле находятся в вашей базе данных (поскольку вы не указали информацию о именах столбцов в таблице ParentCategory). Имейте в виду, что если у вас есть одна таблица категорий (т.е. все ваши категории хранятся в одной таблице), нет ничего плохого в самосоединении с одной и той же таблицей - вам просто нужно псевдоним имен таблиц в вашем запросе убедитесь, что они не являются двусмысленными.
SELECT
C.id
, C.name
, C.category
, P.parent_cat_name
FROM
ChildCategory C
INNER JOIN
ParentCategory P
ON
C.fk_parent_cat_id = P.parent_cat_id
Используйте самосоединение в запросе.
SELECT t.id, t.name, t.fk_parent_cat_id, p.name fk_parent_cat_name
FROM table t INNER JOIN
table p on t.fk_parent_cat_id = p.id
SELECT c.id, c.name, c.fk_parent_cat_id, p.name
FROM category c
left outer join category p on c.fk_parent_cat_id = p.id
Предполагая, что я правильно понимаю, это базовое соединение
SELECT id, fk_parent_cat_id, fk_parent_cat_name
FROM table, parent_table
WHERE table.id = parent_table.id;
Исправьте имена таблиц правильными, так как у вас их нет, и это также предполагает, что ваш первичный ключ в родительской таблице также называется "id".
Если я не понимаю, исправьте меня в комментарии.