Как вынуть описание товара из базы данных
Перейти к содержимому

Как вынуть описание товара из базы данных

  • автор:

Трехтабличный SQL-запрос: извлечение товара и соответстующих ему тэгов

Таблица tag

Пример: если хотим вынуть один товар с этих таблиц нужно взять с таблицы tag_post c 1 до 8 например для id_post поста 5 вынуть все айдишники id_tag и с таблицы tag вынуть по этим айдишника теги то получиться один товар типа 1) артикул 2) Вид изделия 3)Материал 4) Основная вставка 5) Производитель нам важно только айдишники до 5

Как выглядит фильтр

Делаю фильтр на php. И очень затрудняюсь с составлением SQL запроса( Аналогичный вопрос в котором хотел вынуть товары с БД. Потом решил добавить в БД нумерацию с 1 до сколько то там повторяющихся цифр чтобы запрос был простым.

Как сделать свойства товаров в БД?

Задача следующая — делаю интернет магазин, в котором у товаров есть несколько атрибутов. Соответственно комбинация этих атрибутов будет иметь разную цену.. С этим у меня возникли большие сложности.

1) Как построить архитектуру в БД, чтобы свойства были динамические и их можно было бы добавлять к группам товара.
2) Окей, я изучил архитектуру eav и приблизительно понял, как буду их хранить, но как быть с выборкой немного непонятно.. То есть по идее у меня будут товары, к ним будут привязаны предложения, имеющие цену, к которым будут привязаны значения атрибутов товара.. То есть получается чтобы получить цену товара с конкретными характеристиками мне придётся сначала выбрать все предложения, связанные с айдишниками таких то значений?
3) Когда пользователь выбирает свойства, он должен видеть цену предложения, соответствующего выбранным атрибутам. Но если постоянно запрашивать её у сервера апдейт цены будет достаточно долгим.. Как лучше решить этот вопрос?

  • Вопрос задан более трёх лет назад
  • 595 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 4

EAV — гуано по производительности
Его можно использовать для первичного хранения данных, перед тем как ты переваришь и выкинешь уже готовые для работы данные в Solr или Sphinx, например.

Но непосредственно для выборки данных EAV использовать нежелательно по соображениям производительности.

Если вам всенепременно хочется это сделать с реляционной СУБД, то вам поможет денормализация (данные будут дублироваться, но это не страшно, зато работать будет шустро).

А если вам хочется сделать это правильно и чтобы работало максимально быстрым образом, то я бы предложил рассмотреть более подходящие для данной задачи системы: Tarantool, Sphinx,
Solr.

Ответ написан более трёх лет назад
Нравится 2 3 комментария
darksladen @darksladen Автор вопроса

А какие данные можно дублировать для оптимизации? Я хотел как раз связывать значения атрибутов и с товаров и с ценами..

darksladen: Денормализация в самой жесткой форме — это вообще одна таблица

Товар1, размер 46, цена 1000 рублей
Товар1, размер 48, цена 1200 рублей
Товар2, размер 48, цена 1200 рублей

ThunderCat

ThunderCat @ThunderCat
darksladen: в целом — чем более «плоская» таблица, тем быстрее работают индексы и выборки.
разработка программного обеспечения

Если вы используете БД PostgreSQL, то можете хранить аттрибуты, к примеру, в JSON-поле таблицы. Они индексируются и не придется делать кучу JOIN, как с EAV, чтобы вытащить данные.

Но тут есть очевидные минусы, это удаление атрибута, к примеру. Может быть достаточно тяжелым. Но все зависит от способа реализации.

В целом, можно взять EAV и достраивать JOIN-ами к запросу атрибуты, а можно и JSON.
Забыл сказать, JSON поддерживает индексы и запросы по полям.

Ответ написан более трёх лет назад
Нравится 1 3 комментария

ThunderCat

ThunderCat @ThunderCat

Если вы используете БД PostgreSQL, то можете хранить аттрибуты, к примеру, в JSON-поле таблицы

во первых мускуль тоже умеет, во вторых это нехило нарушает нормальность таблиц, в третьих — кто-то видел тест по производительности выборки из жсон полей в постгри/мускуль? Хотелось бы глянуть как они работают, есть подозрение что не очень быстро. Буду благодарен за ссылочки.

С 5.7 вроде, и индексы вычисляемые там тоже есть, да.
Если мы говорим про быстроту, нормализация нарушается в большинстве случаев. Либо у вас таблица нормализована, и, что очень часто, медленна, либо — у вас есть денормализованные данные и работает достаточно быстро. Ссылок не дам, можно погуглить.
Можно так же посмотреть видео Олега Бартунова, в том числе https://www.youtube.com/watch?v=SNzOZKvFZ68

Хочу отметить так же, у себя я применял EAV схему расширения. Это было в 2013-2014 годах. А вот сейчас я бы попробовал именно JSON-поле.

Экспорт объектов базы данных в другие базы данных Access

В Access существует несколько способов скопировать объект, например таблицу или форму, из одной базы данных в другой. Проще всего скопировать и вставить объект, но экспорт объекта дает вам дополнительные возможности. Например, вы можете экспортировать определение таблицы и ее данные или же только определение таблицы (пустую копию таблицы). Вы также можете сохранить сведения об операции в виде спецификации экспорта для дальнейшего использования.

Обзор

Вы можете экспортировать таблицу, запрос, форму, отчет, макрос или модуль из одной базы данных Access в другую. При экспорте объекта Access создает его копию в конечной базе данных.

Экспорт объектов базы данных используется в том случае, если нужно:

  • скопировать структуру таблицы в другую базу данных как ярлык для создания новой таблицы;
  • скопировать оформление и макет формы или отчета в другую базу данных, чтобы быстро создать новую форму или отчет;
  • регулярно копировать последнюю версию таблицы или формы в другую базу данных. Для этого вы можете создать спецификацию экспорта, когда впервые экспортируете объект, а затем повторять операцию с помощью нее.

Обратите внимание на то, что экспорт объекта в другую базу данных мало отличается от открытии второй базы данных и импорта в нее объекта из первой. Ниже приведены два основных различия между импортом и экспортом объектов в базах данных Access.

  • Вы можете импортировать несколько объектов за одну операцию, но не экспортировать их. Если вы хотите экспортировать несколько объектов в другую базу данных, проще открыть конечную базу данных и выполнить импорт в нее.
  • Кроме объектов базы данных, можно импортировать связи между таблицами, любые спецификации импорта и экспорта, а также строки меню и панели инструментов. Вы также можете импортировать запрос в виде таблицы. Экспорт не предлагает таких возможностей.

Ищете сведения об импорте объектов в базу данных Access? См. статью Импорт объектов базы данных в текущую базу данных Access.

Подготовка к экспорту

  1. Откройте исходную базу данных, если она еще не открыта. У нее может быть формат MDB или ACCDB. Если файл имеет формат MDE или ACCDE, исходным объектом должна быть таблица, запрос или макрос. Формы, отчеты и модули невозможно экспортировать из MDE-или ACCDE-файла.

Примечание: Если база данных доступна только для чтения или у вас нет разрешений на внесение в нее изменений, вы сможете выполнить экспорт, но не сохранить его спецификацию.

Элемент Описание
Один объект на операцию Одновременно можно экспортировать только один объект. Чтобы экспортировать несколько объектов, повторите операцию экспорта для каждого из них или импортируйте их в конечной базе данных.
Новая таблица Каждая операция экспорта создает новый объект в конечной базе данных. Если объект с таким именем уже существует, вы можете перезаписать его или же указать другое имя для нового объекта.

Примечание: С помощью экспорта невозможно добавить записи в существующую таблицу. Чтобы сделать это, рекомендуется создать запрос на добавление. Дополнительные сведения см. в статье Добавление записей в таблицу с помощью запроса на добавление.

  • Если не удается открыть базу данных, возможно, она открыта другим пользователем в монопольном режиме. Обычно нужно найти этого пользователя и попросить его закрыть базу данных и снова открыть ее в обычном режиме (для нескольких пользователей).
  • Если база данных защищена паролем, при каждом запуске мастера экспорта или сохраненной спецификации вам будет предлагаться ввести пароль.
  • Если вы хотите экспортировать объект в новую базу данных, необходимо создать пустую базу данных (которая не содержит таблиц, форм и отчетов) до начала операции.

Экспорт объектов базы данных в другие базы данных Access

  1. На вкладке Внешние данные в группе Экспорт нажмите кнопку Access.

Совет: Вы также можете запустить экспорт, щелкнув объект правой кнопкой мыши в области навигации и выбрав команды Экспорт > Access.

Дополнительные сведения

  • Сведения о том, как сохранить сведения об экспорте в виде спецификации, которую можно использовать повторно, см. в статье Сохранение параметров операции импорта или экспорта в виде спецификации.
  • Дополнительные сведения о запуске спецификаций см. в статье Выполнение сохраненной операции импорта или экспорта.
  • Дополнительные сведения о запуске спецификаций в определенное время см. в статье Планирование импорта или экспорта.
  • Сведения о том, как изменить имя спецификации, удалить ее или обновить имена исходных файлов, см. в статье Задачи управления данными.

Как вынуть описание товара из базы данных

Argument ‘Topic id’ is null or empty

Сейчас на форуме

© Николай Павлов, Planetaexcel, 2006-2023
info@planetaexcel.ru

Использование любых материалов сайта допускается строго с указанием прямой ссылки на источник, упоминанием названия сайта, имени автора и неизменности исходного текста и иллюстраций.

ООО «Планета Эксел»
ИНН 7735603520
ОГРН 1147746834949
ИП Павлов Николай Владимирович
ИНН 633015842586
ОГРНИП 310633031600071

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *