@semki096

Как использовать внешние ключи для связки таблиц order и order_items?

Не могу понять как работают внешние ключи и как организовать такой функционал. Вывожу из базы данных в цикле все заказы пользователя, обращаясь к таблице orders. Мне надо рядом с каждім заказом вівести названия товаров - из таблицы order_items. Как это делается, помогут ли мне внешние ключи или они несут другой смысл?
  • Вопрос задан
  • 280 просмотров
Решения вопроса 2
@kvalood
Можно через ключи, сделать таблицу order_product где хнатить id заказа, и id товара. (у заказов может быть несколько товаров, будет несколько записей).

SELECT o.order_id, и другие колонки, op.product_id, op.order_id, p.id, p.name  
FROM orders as o
LEFT JOIN order_product as op ON o.order_id = op.order_id
LEFT JOIN products as p ON op.product_id = p.id


Конечно это набросок, но думаю разберетесь :)
Ответ написан
dmitriylanets
@dmitriylanets
веб-разработчик
чет вообще не понял причем тут внешние ключи и 3-я таблица order_product, которую вы указали как решение.
1. Мне надо рядом с каждім заказом вівести названия товаров - из таблицы order_items
- если одним запросом
SELECT
  *, GROUP_CONCAT(order_items.`name`) AS `names`
FROM order_items
  INNER JOIN orders
    ON order_items.order_id = orders.id

2. Третья таблица order_product с полями id заказа, и id товара - обычно делают для связи многие ко многим у вас что товар может иметь принадлежность к нескольким заказам?
3. Внешние ключи как правило используют для целостности данных, например вы не сможете удалить заказ если у него есть товары, хотя можно использовать каскадное удаление
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы