Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Как обьеденить таблицы


Recommended Posts

Добрый день, название товара находиться таблице product_description,а вот описание храниться в product_description_store так как зависит от store_id и language_id

 

Как написать запрос объединение названия и описание из разных таблиц ?
Загвоздка в том что описание есть не для всех магазинов и при LEFT JOIN в случае если описание не заданно получаем пустоту )

Надіслати
Поділитися на інших сайтах

31 минуту назад, zomo сказал:

Добрый день, название товара находиться таблице product_description,а вот описание храниться в product_description_store так как зависит от store_id и language_id

 

Как написать запрос объединение названия и описание из разных таблиц ?
Загвоздка в том что описание есть не для всех магазинов и при LEFT JOIN в случае если описание не заданно получаем пустоту )

product_description LEFT JOIN product_description_store

тогда независимо от наличия описания в результатах будет инфа о товаре (назании)

 

product_description_store RIGHT JOIN product_description

 

ну а если описание не заполнено, то что вы надеетесь получить?

Змінено користувачем Blast
Надіслати
Поділитися на інших сайтах

1 час назад, Blast сказал:

product_description LEFT JOIN product_description_store

тогда независимо от наличия описания в результатах будет инфа о товаре (назании)

 

product_description_store RIGHT JOIN product_description

 

ну а если описание не заполнено, то что вы надеетесь получить?

 

Если не заполнено, то содержимое левой колонки ...

 

Если LEFT JOIN и содержимое в таблице с описанием не найдено, то var_dump не отдает результаты

Надіслати
Поділитися на інших сайтах

47 минут назад, zomo сказал:

 

Если не заполнено, то содержимое левой колонки ...

 

Если LEFT JOIN и содержимое в таблице с описанием не найдено, то var_dump не отдает результаты

покажите запрос.

LEFT JOIN должен отдавать все записи из левой таблицы независимо от того, есть ли связанные в правой. Если связанных нет, то поля правой будут NULL. Но вы увидите все записи из левой, которые соответствуют условиям запроса

Надіслати
Поділитися на інших сайтах

37 минут назад, Blast сказал:

покажите запрос.

LEFT JOIN должен отдавать все записи из левой таблицы независимо от того, есть ли связанные в правой. Если связанных нет, то поля правой будут NULL. Но вы увидите все записи из левой, которые соответствуют условиям запроса

Покажу на примере категории

 

SELECT DISTINCT * FROM " . DB_PREFIX . "product_category pc LEFT JOIN " . DB_PREFIX . "product_category_description pcd ON (pc.product_category_id = pcd.product_category_id)  LEFT JOIN " . DB_PREFIX . "product_category_description_store pcds ON (pc.product_category_id = pcds.product_category_id) WHERE pc.product_category_id = '" . (int)$product_category_id . "' AND pcd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pcds.store_id = '" . (int)$this->config->get('config_store_id') . "'  AND pcds.language_id = '" . (int)$this->config->get('config_language_id') . "' 

 

Надіслати
Поділитися на інших сайтах

AND (pcds.store_id = '" . (int)$this->config->get('config_store_id') . "' OR pcds.store_id IS NULL)  AND (pcds.language_id = '" . (int)$this->config->get('config_language_id') . "' OR pcds.language_id IS NULL)

не уверен что сработает, но причина в том, что ваш запрос отсекает записи по последним условиям.

 

еще как вариант язык перенести в условие соединения

LEFT JOIN " . DB_PREFIX . "product_category_description_store pcds ON (pcd.product_category_id = pcds.product_category_id AND pcd.language_id = pcds.language_id)

но со store_id так видимо не получится, т.к. он есть только в pcds

  • +1 1
Надіслати
Поділитися на інших сайтах

56 минут назад, Blast сказал:

AND (pcds.store_id = '" . (int)$this->config->get('config_store_id') . "' OR pcds.store_id IS NULL)  AND (pcds.language_id = '" . (int)$this->config->get('config_language_id') . "' OR pcds.language_id IS NULL)

не уверен что сработает, но причина в том, что ваш запрос отсекает записи по последним условиям.

 

еще как вариант язык перенести в условие соединения


LEFT JOIN " . DB_PREFIX . "product_category_description_store pcds ON (pcd.product_category_id = pcds.product_category_id AND pcd.language_id = pcds.language_id)

но со store_id так видимо не получится, т.к. он есть только в pcds

СПАСИБО ВАМ ОГРОМНЕЙШЕЕ! Получилось ! Перенес условие в ON 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.