powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение 2-х таблиц по полям varchar
8 сообщений из 8, страница 1 из 1
Объединение 2-х таблиц по полям varchar
    #39751828
ilich.ism
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Есть две таблицы (упрощенное описание).
1. Таблица с товарами (products). Содержит название, артикул (varchar(33)), производитель (varchar(33)).
2. Таблица с ценами продавцов (prices). Содержит артикул (varchar(33)), производитель (varchar(33)), цену товара.
В первой таблице около 15000 позиций, во второй таблице с предложениями сотни тысяч. Вторая таблица обновляется 5-10 раз в сутки новыми предложениями

Задача сделать следующее:
1. Вывести из первой таблицы только те товары, по которым есть предложения.
Раньше артикул и производитель были вынесены в отдельные таблицы и в таблице с товарами были указаны ID. И в условии было SELECT * FROM products WHERE EXISTS(SELECT id FROM prices WHERE prices .article_id=products.article_id AND prices.brand_id=products.brand_id). Это работало быстро. Но если делать тоже самое, но по полям varchar, то все виснет.
2. Получить все предложения по товару.

Вопрос: как оптимально сделать связь этих двух таблиц (возможно, через третью)? Через ID производителя и ID артикула в самих таблицах решил отказаться, чтобы не было лишних данных. Или я не прав?
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39751927
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ilich.ism,

Использование строковых полей в качестве ключевого поля не самый лучший вариант, но если данные приходят из вне то сойдет. начните с того что создайте индекс на products.артикул.
В конкретно Вашем случае я бы добавил в таблицу prices поле idProduct с ссылкой на products.id, который заполнялся бы уже после загрузки данных + 2 индекса products.артикул, prices.idProduct .
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39751931
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilich.ismерез ID производителя и ID артикула в самих таблицах решил отказаться, чтобы не было лишних данных.Ноборот, если вынести производителя в отдельный справочник, а в таблицах использовать его ID, то будет и данных меньше, и скорость работы запросов выше.
Артикулы тоже, возможно, имеет смысл в справочник вынести, но это надо детально на данные смотреть.
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39751942
ilich.ism
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Т.е. все-таки выносить в отдельные таблицы? А если сделать промежуточную таблицу, где сопоставить артикулы и производители? Хотя все равно связь по полю varchar остается...
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39752012
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ilich.ism,

3 справочника- наименование товары, артикул, производитель
этого достаточно чтоб сделать всё через индексы.
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39752074
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ilich.ism1. Вывести из первой таблицы только те товары, по которым есть предложения.
Раньше артикул и производитель были вынесены в отдельные таблицы и в таблице с товарами были указаны ID. И в условии было SELECT * FROM products WHERE EXISTS(SELECT id FROM prices WHERE prices .article_id=products.article_id AND prices.brand_id=products.brand_id).

Может туплю, а разве SELECT DISTINCT ... INNER JOIN эту задачу не решает?
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39752098
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
paverSELECT DISTINCT ... INNER JOIN эту задачу не решает?решает, если его использовать, но индексы и справочники позволят ещё более ускорить такое решение
...
Рейтинг: 0 / 0
Объединение 2-х таблиц по полям varchar
    #39752294
ilich.ism
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ясно, спасибо! Значит оставим все как было.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Объединение 2-х таблиц по полям varchar
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]