Как сделать SELECT с объединениями между таблицами в базе данных Opencart? - PullRequest
1 голос
/ 04 апреля 2011

Я играю с базой данных Opencart 1.4.9.4.И поскольку у меня нет опыта работы с базой данных, я нахожу структуру странной (жесткой, сумасшедшей).Например: если мне нужно показать модель и имя product, мне нужно объединить 2 таблицы product и product_description , и тот же подход для категории, производителей и т. Д.Есть в таблице только два поля, product_to_category , поля: category_id и product_id .Сколько JOIN-шоу показывают, которые я использую, если я действительно должен использовать JOIN-ы, чтобы это работало?Но одна действительно странная вещь - это сделать запрос, в котором я получаю идентификатор продукта, ИМЯ и МОДЕЛЬ с ИМЯ КАТЕГОРИИ и ИМЕНОМ ПРОИЗВОДИТЕЛЯ, у меня нет знаний для этого.Это будет включать таблицу, по крайней мере я думаю: product, product_description, product_to_category, category_description и производитель .Извините за беспорядок, но мой разум сейчас беспорядок!

Ответы [ 2 ]

3 голосов
/ 16 апреля 2011

В opencart вы соединяете значения product_id вместе, чтобы получить полную строку данных (и используете предложение where для установки правильного идентификатора языка описания, поэтому

SELECT * FROM product p LEFT JOIN product_description pd ON p.product_id = pd.product_id WHERE pd.language_id = 1 LIMIT 20

Это позволит получить все данные из обеих таблиц и правильно объединить их, используя ограничение в 20 продуктов и язык 1 (по умолчанию английский). Конечно, при правильной записи в php вам нужно будет динамически вызывать некоторые данные (например, префикс таблицы и идентификатор языка), поэтому он будет работать, если у вас есть несколько языков или таблиц базы данных с префиксами. Что-то вроде

$query = "SELECT * FROM `" . DB_PREFIX . "product` p LEFT JOIN `" . DB_PREFIX . "product_description` pd ON p.product_id = pd.product_id WHERE pd.language_id = " . (int)$this->config->get('config_language_id') . " LIMIT 20";
0 голосов
/ 16 апреля 2011

Извините, я совершенно забыл об этом: MySQL SELECT Дублированные строки из базы данных OpenCarts Я уже об этом спрашивал.

...