powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нетипичная таблица, вопрос по SELECT
6 сообщений из 6, страница 1 из 1
Нетипичная таблица, вопрос по SELECT
    #33636008
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, как называется хранение данных когда наименование параметра(свойства,поля) не в столбцах а в строках? Как найти (в данном случае товар) с определённым набором параметров, если параметров может быть сколь угодно много?
Например необходимо найти товар у которого (параметр=пар2 AND значение=4) AND (параметр=пар1 AND значение=value1)

товар|параметр|значение
---------------------------
тов1 | пар1 | value1
тов1 | пар2 | 4
тов1 | пар3 | value2
тов2 | пар1 | 198
тов2 | пар2 | да
тов2 | пар3 | value99

С уважением Артём
ps не могу даже поискать, т.к. не могу сформулировать проблему в нескольких словах.
Буду благодарен не только за конкретные советы но и за ссылки на любые источники.
...
Рейтинг: 0 / 0
Нетипичная таблица, вопрос по SELECT
    #33636356
А что тут сложного ? Замени свой "связующий" AND на OR:

select * from testparts
where partParam='par2' and paramValue='4'
OR
partParam='par1' and paramValue='value1'

Или что-то я не так понял ?
...
Рейтинг: 0 / 0
Нетипичная таблица, вопрос по SELECT
    #33636387
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в этом случае найдётся товар (товары) у которого
partParam='par2' and paramValue='4'
и другой товар (товары) у которого
partParam='par1' and paramValue='value1'
а мне нужен товар у которого partParam='par2' and paramValue='4' и partParam='par1' and paramValue='value1'
...
Рейтинг: 0 / 0
Нетипичная таблица, вопрос по SELECT
    #33636394
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
select Tovar from testparts a
inner join testparts b
on a.Tovar=b.Tovar
where a.partParam='par2' and a.paramValue='4'
  and b.partParam='par1' and b.paramValue='value1'
...
Рейтинг: 0 / 0
Нетипичная таблица, вопрос по SELECT
    #33636398
Сорри, не сразу понял, что ты имел ввиду.
Тебе, кажись, надо найти ОДИН товар, т.е. выбрать ОДНУ строку, отвечающий сразу двум парам условий (и для каждого из условий в таблице своя отдельная строка, отвечающая ему).
А то, что я написал в предыдущем посте, выдаст тебе ДВЕ строки для одного и того же товара.

Тогда входм в раздел SQL портала (5.1) или в SQL-manager (5.0.x) и делаем так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table testParts(partNumber char( 20 ),partParam char( 20 ),paramValue char( 30 )
insert into testparts values ('tov1','par1','value1') 
insert into testparts values ('tov1','par2', 4 ) 
insert into testparts values ('tov1','par3','value2') 
insert into testparts values ('tov2','par1','198) 
insert into testparts values ('tov2','par2','yes')
insert into testparts values ('tov2','par3,'value99')

Далее делаем так:
Код: plaintext
1.
2.
3.
4.
select * from testparts t1,testparts t2
where t1.partNumber=t2.partNumber
   and t1.partParam='par1' and t1.paramValue='value1'
   and t2.partParam='par2' and t2.paramValue='4'

Результат должен быть таким:
Код: plaintext
1.
2.
3.
# partNumber partParam paramValue partNumber partParam paramValue 
--------------------------------------------------------------------
 1  tov1       par1      value1      tov1      par2       4    
...
Рейтинг: 0 / 0
Нетипичная таблица, вопрос по SELECT
    #33637635
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отлично. Большое спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Нетипичная таблица, вопрос по SELECT
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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