MySQL и JOIN из трех таблиц

357
13 ноября 2017, 19:22

Имеем три таблицы shop, category, product в MySQL.

shop: id, name, url

category: id, shop_id, name, url

product: id, shop_id, category_id, price, store_address(тут ENUM из ['ЦУМ','УЮТ'])

По category.id необходимо получить product.id, product.price, category.name, shop.name

1) Как сделать запрос правильно? Я так понял единственным правильным решением будет JOIN. Не в SQL не в MySQL не силен.

2) Мне кажется store_address лучше перенести в таблицу shop, а не держать ее в product

P.S. Для личного саморазвития, интересует вопрос: Думал лучше 1 раз при запросе брать список категорий и магазинов, и на стороне клиента используя JS менять id на name. Все потому, что плохо понимаю как работает JOIN, не будет ли он для каждой записи дергать запрос к category и shop, что бы узнать его name по id? Решение брать список категорий и магазинов отпало почти сразу, мне кажется данный подход выглядит ужасно. Верно ли, что в данном случае лучше использовать JOIN?

Правка: не нужно искать соответствий есть ли такая категория. Нужно просто вместо category_id у product вставить category.name

Answer 1

1)

 SELECT p.id, p.price, p.img, p.store_address, c.name, s.name FROM product p
        INNER JOIN category c ON p.category_id = c.id
        INNER JOIN shop s ON p.shop_id = s.id
        WHERE c.id = 170

2) Структура БД вопрос слишком общий без конкретных условий. Т.к. я только учусь и пример условный, вопрос не актуален.

Answer 2

В общем должно быть примерно так, нужно проверять:

SELECT product.id, product.price, category.name, shop.name FROM category LEFT JOIN shop ON category.shop_id = shop.id LEFT JOIN product ON category_id = product.category_id WHERE category.id = $id

READ ALSO
SQL запрос (please help)

SQL запрос (please help)

Прошу помочьЕсть две таблицы:

281
Mysql выборка повторяющих значений

Mysql выборка повторяющих значений

Имеются поля примерно такого рода

265
Вывести количество покупок для клиента

Вывести количество покупок для клиента

Требуется вывести имена клиентов с соотвествующими кол-вами покупок каждогоТ

278
Как эмулировать запросы к Heroku через cURL PHP?

Как эмулировать запросы к Heroku через cURL PHP?

Есть android-приложение, которое посылает запросы к серверу Heroku:

394