Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2011, 01:24   #1
templton
 
Регистрация: 19.01.2011
Сообщений: 7
По умолчанию Сложный запрос

Господа! Не дайте мозгу взорваться от деления на ноль!
Суть. есть таблица table
------------------------------------
| num | col | pos |
------------------------------------
| 5 | 7 | 1,2,3,4,5 |
------------------------------------
| 9 | 19 | 3,7,9 |
------------------------------------
| 8 | 1 | 11,12 |
------------------------------------

необходимо выбрать поля num и col при условии, что поле pos содержит переменную x. К примеру, делаю:
Код:
select table.num, table.col where x in (select table.pos from table)
в этом случае нужные столбцы выбираются только, если перенная х есть во всех строчках поля pos.
При этом способ
Код:
select table.num, table.col from table where x in (pos)
не проходит, выкидывается ошибка, мол, pos имеет имеет множество значений.
Были б знания, как добраться до данных с формы и данных в таблицам средствами vba, то сделал бы за 5 минут. Было б это на php+mysql - тоже недолго скриптом обработать. Короче, были б спички - был бы рай.
Может быть можно как-то использовать другие запросы? Допустим сделать пару-тройку предварительных запросов, а потом на основе их результатов сделать результирующий запрос (БД - access)?


_________
к сожалению, модификаторов тега [СODE] на данном форуме нет!
Поэтому просто оформлять тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.04.2011 в 09:34.
templton вне форума Ответить с цитированием
Старый 21.04.2011, 08:47   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Код:
дл штучного поиска x=5
select table.num, table.col from table where instr("," & pos & ",",",5,")>0
_________
к сожалению, модификаторов тега [СODE] на данном форуме нет!
Поэтому просто оформлять тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Модератор.
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание

Последний раз редактировалось Serge_Bliznykov; 21.04.2011 в 09:33.
shanemac51 вне форума Ответить с цитированием
Старый 21.04.2011, 10:45   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

я согласен (в принципе) с ответом shanemac51.

Только надо учитывать, что
1) поиск подстроки в текстовом поле не входит в стандарт SQL
поэтому в разных СУБД функции поиска могут отличаться (как именем, так и синтаксисом). Приведённый вариант использует функцию Oracle
Указывайте свою СУБД, если хотите получить ответ для Вашей БД.

2) структура таблицы нарушает принципы СУБД (правила нормализации, в одном поле хранятся фактически несколько характеристик...). Это не совсем корректно.
Впрочем, реальная жизнь часто заставляет отступать от сухой теории. Так что, если Вы уверены, что так проще (или по другому нельзя) - тогда ладно. Но вообще это повод задуматься, всё ли правильно спроектировано на уровне структур данных...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.04.2011, 11:17   #4
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

а может банальное Like, поможет "*" & x & "*"
Код:
select table.num, table.col from table WHERE ((table.pos) Like "*" & x & "*")
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 21.04.2011, 11:36   #5
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

тогда

Код:
"," & pos & ","  like "'*," & trim(x) & ",*'"
5 и 15 разные вещи
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 21.04.2011, 11:39   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

R Dmitry, супер! +1
Действительно. Ведь LIKE входит в стандартый набор команд SQL.
Думаю, что можно и так!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.04.2011, 12:15   #7
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
, что поле pos содержит переменную x
Слова автора
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 21.04.2011, 12:22   #8
R Dmitry
Форумчанин
 
Регистрация: 07.03.2010
Сообщений: 796
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
тогда

Код:
"," & pos & ","  like "'*," & trim(x) & ",*'"
5 и 15 разные вещи
еще у первого и последнего элементов "x" нет запятых
Логика?!.... она где то рядом... E_mail: dg_rusak@mail.ru Если спасибо мало: Яндекс . Деньги - 41001731366021 WM R269866874234
R Dmitry вне форума Ответить с цитированием
Старый 21.04.2011, 13:43   #9
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Код:
"," & pos & ","    добавление запятых
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложный запрос Kostya777 Microsoft Office Access 1 07.12.2010 12:02
Сложный запрос в SQL A-Lex-Is SQL, базы данных 1 10.08.2010 23:19
Сложный запрос nikolai_P SQL, базы данных 2 01.04.2010 01:21
Сложный запрос Lianchik Помощь студентам 1 01.03.2010 17:16
DBGrid и сложный запрос czuryk БД в Delphi 0 20.04.2009 17:57