Гуру алгоритмизации и оптимизации, плиз, подскажите алгоритм поиска для следующей ситуации:
Есть таблица
PK_field,
FK_field,
search_field,
data
Заданы условия (несколько) на пары search_field — data (т.е. они одновременно должны быть равны чему-то, например search_field='Title', data='Programming'; search_field='Author', data='Sliborsky')
Задача: найти такие FK_field, для которых будут удовлетворятся все условія поіска
Здравствуйте, AlLucky, Вы писали:
AL>Гуру алгоритмизации и оптимизации, плиз, подскажите алгоритм поиска для следующей ситуации: AL>Есть таблица AL>PK_field, AL>FK_field, AL>search_field, AL>data
AL>Заданы условия (несколько) на пары search_field — data (т.е. они одновременно должны быть равны чему-то, например search_field='Title', data='Programming'; search_field='Author', data='Sliborsky')
AL>Задача: найти такие FK_field, для которых будут удовлетворятся все условія поіска
1. SQL, я так понимаю, не подходит.
2. for() { if (strcmp() == 0) и т.д. видимо, тоже.
3. Чего за таблица, как определена, какие методы имеются?
AL>Спасибо
Здравствуйте, vnp, Вы писали:
vnp>1. SQL, я так понимаю, не подходит.
Почему? Хотелось бы как раз какой-нить его хитрой комбинацией забомбить, ежели это возможно... vnp>2. for() { if (strcmp() == 0) и т.д. видимо, тоже.
Ну, это да vnp>3. Чего за таблица, как определена, какие методы имеются?
Таблица в БД, определена как показано выше (ну, разве что потом может сделаем Partitioning но это не повлияет на структуру). А какие методы могут быть?
AL>>Спасибо
Здравствуйте, AlLucky, Вы писали:
AL>Здравствуйте, vnp, Вы писали:
vnp>>1. SQL, я так понимаю, не подходит. AL>Почему? Хотелось бы как раз какой-нить его хитрой комбинацией забомбить, ежели это возможно... vnp>>2. for() { if (strcmp() == 0) и т.д. видимо, тоже. AL>Ну, это да vnp>>3. Чего за таблица, как определена, какие методы имеются? AL>Таблица в БД, определена как показано выше (ну, разве что потом может сделаем Partitioning но это не повлияет на структуру). А какие методы могут быть?
Дошло. Я из исходного поста не понял, что таблица в БД. Так простой
select FK_field from table
where
(search_field = ... and data = ...) or
(search_field = ... and data = ...) or
...
должен все сделать сам. Или я опять не доезжаю?
AL>>>Спасибо
vnp>select FK_field from table
vnp>where
vnp> (search_field = ... and data = ...) or
vnp> (search_field = ... and data = ...) or
vnp> ...
vnp>
vnp>должен все сделать сам. Или я опять не доезжаю?
Так просто выберутся все значения, удовлетворяющие хоть одному критерию. После этого придется ручками и не очень, наверное, эффективано перебирать результаты в поисках такого, который бы удовлетворял ВСЕМ условиям (мне именно надо выбрать такое значение, которое удовлетворяет ВСЕМ условиям, а не каким-либо)
AL>>>>Спасибо
Здравствуйте, AlLucky, Вы писали:
AL>Гуру алгоритмизации и оптимизации, плиз, подскажите алгоритм поиска для следующей ситуации: AL>Есть таблица AL>PK_field, AL>FK_field, AL>search_field, AL>data
AL>Заданы условия (несколько) на пары search_field — data (т.е. они одновременно должны быть равны чему-то, например search_field='Title', data='Programming'; search_field='Author', data='Sliborsky')
AL>Задача: найти такие FK_field, для которых будут удовлетворятся все условія поіска
AL>Спасибо
Если я правильно понял, то этот SQL запрос пишется примерно так:
SELECT "PK_field" FROM <имя_таблицы> where (search_field = <условие_отбора_1>) AND (data = <условие_отбора_2>);
При этом расстановка кавычек (двойные или одинарные), а ткже запись название полей для SQL-запроса зависит от конкретной реализации SQL в той СУБД, для которой запрос. Подробнее смотри сиснтаксис SQL по стандарту.
Здравствуйте, AlLucky, Вы писали:
AL>Здравствуйте, vnp, Вы писали:
vnp>>
vnp>>select FK_field from table
vnp>>where
vnp>> (search_field = ... and data = ...) or
vnp>> (search_field = ... and data = ...) or
vnp>> ...
vnp>>
vnp>>должен все сделать сам. Или я опять не доезжаю? AL>Так просто выберутся все значения, удовлетворяющие хоть одному критерию. После этого придется ручками и не очень, наверное, эффективано перебирать результаты в поисках такого, который бы удовлетворял ВСЕМ условиям (мне именно надо выбрать такое значение, которое удовлетворяет ВСЕМ условиям, а не каким-либо)
AL>>>>>Спасибо
А заменить OR на AND в предложенным запросе ??
Кстати говоря еще вроде как in имеется.