Подтвердить что ты не робот

MySQL Inner Join Query Несколько таблиц

Я пытаюсь объединить несколько таблиц, а примеры макетов ниже:

Заказы

user_id=7 pricing id=37

products_pricing

id=37 product_id=33

продукты

id=33 name=test product

SQL

SELECT *
FROM orders
  INNER JOIN products_pricing
    ON orders.pricing_id = products_pricing.id
  INNER JOIN products
    ON products_pricing.product_id = products.id
WHERE orders.user_id = '7' ");

объявления

id=233 user_id=7 url=test.com

С этим SQL я получаю вывод, предоставляющий мне все продукты из user_id из 7, и он будет перечислять каждое имя продукта в цикле while. Однако, когда я добавляю еще один INNER JOIN для таблицы, называемой списками, в которой есть столбец user_id, и мне нужно захватить URL-адрес для каждой строки, которая соответствует, чтобы я мог гиперссылки на названия продуктов с помощью URL-адреса. Я также получаю все, что содержится в таблице списков как рабочий материал выше. Я либо делаю это очень неправильно, либо что-то упускаю. Я потратил несколько часов, пытаясь понять это, но получаю тот же результат. Может ли кто-нибудь помочь мне?

4b9b3361

Ответ 1

Попробуйте следующее:

SELECT 
  p.id,
  p.name,
  l.url,
  o.user_id,
  o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id  = pp.id
INNER JOIN products         AS  p ON pp.product_id = p.id
INNER JOIN listings         AS  l ON l.user_id = o.user_id
WHERE o.user_id ='7' 
  AND l.id = 233 
  AND l.url = 'test.com';

SQL Fiddle Demo

Для данных примера, опубликованных в вашем вопросе, это даст вам:

| ID |        NAME |      URL | USER_ID | PRICING_ID |
------------------------------------------------------
| 33 | testproduct | test.com |       7 |         37 |

Ответ 2

Да, это можно сделать, используя INNER join yourself.and fetch select column в инструкции select.

SELECT 
  p.id,
  p.name,
  l.url,
  o.user_id,
  o.pricing_id
FROM orders AS o
INNER JOIN products_pricing AS pp ON o.pricing_id  = pp.id
INNER JOIN products         AS  p ON pp.product_id = p.id
INNER JOIN listings         AS  l ON l.user_id = o.user_id
WHERE o.user_id ='7' 
  AND l.id = 233 
  AND l.url = 'test.com';