powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос с отрицанием но чуть сложнее чем обычно
11 сообщений из 11, страница 1 из 1
запрос с отрицанием но чуть сложнее чем обычно
    #33146238
Фотография Radjaman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mysql 3.23
возможно я туплю, но вот ситуация:
таблицы
obj (id, obj_name) - объекты
prop (id, prop_name) - справочник свойств (цвет, размер, неважно что)
val (id, prop_id, obj_id, value) - значения свойств для объектов

если мне нужно выбрать список свойств со значениями для заданного объекта, то это легко
Код: plaintext
select * from prop p left join val v on p.id = v.prop_id where v.obj_id = {значение}
а вот выбрать те свойства, значения которых еще не заданы для объекта, непонятно.
запрос такой как в примере
Код: plaintext
1.
select * from prop p left join val v on p.id = v.prop_id
where v.id is null
возвращает записи как ему и положено,
а вот так
Код: plaintext
1.
select * from prop p left join val v on p.id = v.prop_id
where v.id is null and v.obj_id = {значение}
не работает. хотя в принципе эо понятно.
но: а как сделать чтобы работало правильно? (вот тут то я и туплю) помогите плиз
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146259
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну мне скучно.

Код: plaintext
1.
2.
3.
4.
select * from prop where 
not exists (select * from val where prop.id = val.prop_id and obj_id= 1 ) 

select * from prop where id
not in (select prop_id from val  where obj_id= 1 ) 
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146275
Фотография Radjaman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет.
подчеркиваю: Mysql 3.23
вложенные запросы не работают :)
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146281
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что там работает?
Временные таблицы работают?

Неужели MySQL не поддерживает подзапросов? Это же древний стандарт!
Точно не помню, но в SQL-2 это уже было.
Я был уверен, что хотя бы вариант с exists точно должен работать на всех серверах.
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146290
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через простые outer join ЭТОГО не сделать. Если во where есть что-то кроме проверки на Null, то их выполнение отсекает все остальное.

Если временные таблицы работают, то можно создать копию prop и удалить из нее имеющиеся у объекта значения . Это-то, надеюсь, можно?

=============
Я вообще не в курах, скоко у вас версий. Но может ПОСЛЕДНЯЯ позволяет нормально работать?
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146458
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2: Cat2

Перенеси этот топик в ПТ ! Там его место.
Флейму на эту тему тут и так хватает...
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146669
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет !

Что бы ответить без подзапросов, думаю, будет нужно для каждого obj иметь набор записей в val с признаком, задано или не задано свойство. Как вариант признака val.value is null == свойство не задано. С точки зрения оптимальности исполнения запроса, лучше иметь дополнительный признак, с not null значением.

Удачи,
Дмитрий

--
AnyDAC ( www.da-soft.com ) - Oracle, MySQL, MSSQL, MSAccess, IBM DB2,
Sybase ASA, DbExpress, ODBC freeware data access framework.
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146673
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Radjamanа вот так
Код: plaintext
1.
select * from prop p left join val v on p.id = v.prop_id
where v.id is null and v.obj_id = {значение}
не работает. хотя в принципе эо понятно.
но: а как сделать чтобы работало правильно? (вот тут то я и туплю) помогите плиз

Код: plaintext
1.
2.
select * from prop p 
left join val v on p.id = v.prop_id and v.obj_id = {значение}
where v.id is null 
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33146715
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я думал я ламер
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33147127
Фотография Radjaman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dalai lamerа я думал я ламерты не один :)
...
Рейтинг: 0 / 0
запрос с отрицанием но чуть сложнее чем обычно
    #33147128
Фотография Radjaman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Glory - мой кумир!
спасибо
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос с отрицанием но чуть сложнее чем обычно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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