SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.02.2021 16:52:15

Slorvengo
Завсегдатай
Зарегистрирован: 08.08.2013
Сообщений: 41

SELECT EAV и запрос с условаиями

Добрый вечер.

Изучаю паттерна EAV и создал первую стркутуру БД...

"tbl_page"
id    int(11)
title    varchar(255) []

"tbl_eav_attr"
id    int(11)
entity_type    varchar(255) []    // тип сущности которой принадлежит атрибут ("tbl_page")
attr_type    varchar(255) []    // тип атрибута (input, text, data и т.д.)
attr_key    varchar(255) []    // ключ атрибута
attr_title    varchar(255) []    // название атрибута


"tbl_eav_attr_value"
id    int(11)
entity_id    varchar(255) []    // id-сущности которой принадлежит запись (в таблице "tbl_page")
tbl_eav_attr_id    int(11) [0]    // id-атрибута
attr_value    text NULL // значение атрибута
 


В таблицу  "tbl_eav_attr" добавил 4 атрибута  для сущности страница "tbl_page":

цвет | color
фоновое изображение  | bgimage
с новой строки?  | flag_new_line
серия дома | dom_seria

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

flag_new_line  = 1
dom_seria = 'I-155'

Спасибо.

Неактивен

 

#2 16.04.2021 22:10:50

Slorvengo
Завсегдатай
Зарегистрирован: 08.08.2013
Сообщений: 41

Re: SELECT EAV и запрос с условаиями

Структуру создать получилось и реализовать функционал EAV - но появился другой вопрос.
Как хранить пустые значения в таблице "tbl_eav_attr_value".

Если значение атрибута не заполнено - то получается должна быть пустая строка в БД.
Если нет такой строки то не получится искать по таблице атрибутов


// Так найдем все цвета которые не заполнены
where attr_value = ''

// Так найдем все заполненные цвета
where attr_value <> ''

А если физически строки в БД не будет сущестовать в таблице value то как тогда искать?

Неактивен

 

#3 18.04.2021 15:05:46

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2366

Re: SELECT EAV и запрос с условаиями

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


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson