Соединить таблицы значений Если запись существует MySQL - PullRequest
0 голосов
/ 30 мая 2018

Мне нужно объединить значения из моей таблицы products только тогда, когда существует запись в таблице changes, другими способами получить возврат только из таблицы products, я пытаюсь использовать LEFT JOIN для этого, но делаю что-то не так.Также таблицы changes и products имеют одинаковую структуру

    SELECT
    product.*, 
    parent.name, 
    parent.ignored, 
    child.name, 
    child.ignored, 
    changes.* 

    FROM
    products AS product 
    inner join parent_cat AS parent on product.parent_id = parent.ID 
    inner join child_cat AS child on product.category_id = child.ID 
    left join changes AS changes on changes.product_id = product.SKURcrd
    WHERE
       product.slug = 'some slug'

Возвращенные данные имеют вид:

{#389 ▼
  +"parent_id": 3
  +"category_id": 142
  +"product_id": null
  +"slug": "some slug"
  +"SKURcrd": "301832"
  +"product_name": null
  +"product_name_revert": "1911 AIR"
}

Структура таблиц выглядит (схематично):

-------------------------        ----------------------------
SKURcrd  |  product_name         product_id  |  product_name
-------------------------        ----------------------------

1 Ответ

0 голосов
/ 30 мая 2018

Вы можете сделать это двумя способами: либо использовать INNER JOIN для изменений, либо предложение where, например where.produc_id не является нулевым ... как показано ниже:

SELECT
product.*, 
parent.name, 
parent.ignored, 
child.name, 
child.ignored, 
changes.* 

FROM
products AS product 
inner join parent_cat AS parent on product.parent_id = parent.ID 
inner join child_cat AS child on product.category_id = child.ID 
left join changes AS changes on changes.product_id = product.SKURcrd
WHERE
   product.slug = 'some slug' and changes.product_id is not null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...