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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2009, 09:22   #1
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию MS SQL. Подскажите с составлением запроса.

Добрый день. Есть 2 таблички вида:
1: id status
2: id okv kod
Мне необходимо сделать выборку числа элементов удовлетворяющих условию. Из таблицы выбрать количество элементов, okv поле которых содержит некий текст, с учетом того, чтобы поле код было равно 1, (их ид совпадали) статус был не равен 1.
Мои предположения:
Код:
select count(*)
where
(select t2.okv
where t1.id = t2.id and t1.status<>1 and t2.kod =1
)
LIKE '%01'
p.s. Подправил читабельность запроса.
Страх это слабость и потому, кто испугался уже побежден.

Последний раз редактировалось Mixasik; 13.10.2009 в 10:08.
Mixasik вне форума Ответить с цитированием
Старый 13.10.2009, 10:00   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ну и как - работает?
с ходу нашел отсутствие фраз from
ну и все это можно написать без внутреннего запроса
и если каждый символ запроса писать на новой строчке, то будет еще нечитабельнее
soleil@mmc вне форума Ответить с цитированием
Старый 13.10.2009, 10:07   #3
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
ну и как - работает?
с ходу нашел отсутствие фраз from
ну и все это можно написать без внутреннего запроса
и если каждый символ запроса писать на новой строчке, то будет еще нечитабельнее
Нет не работает.
"The column prefix 't1' does not match with a table name or alias name used in the query."
Вот такую вот ошибку выдает. Но поле таблица точно существует и называется именно так. У меня MS SQL SERVER 2000. Да я просто не знаю откуда ннаписать FROM. Наверное из t2.
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Старый 13.10.2009, 13:44   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

вот запрос с тестовыми данными

Код:
with
  t1 as (
  select 1 id, 1 status from dual union all
  select 2, 2 from dual union all
  select 3, 1 from dual union all
  select 4, 2 from dual union all
  select 5, 3 from dual union all
  select 6, 4 from dual union all
  select 7, 1 from dual
  ),
  t2 as (
  select 1 id, '901' okv, 1 kod from dual union all
  select 2, '101', 1 from dual union all
  select 2, '201', 1 from dual union all
  select 3, '301', 1 from dual union all
  select 5, '402', 1 from dual union all
  select 4, '501', 1 from dual union all
  select 3, '8102', 1 from dual union all
  select 2, '8101', 1 from dual
  )
  
select 
  count(t2.id)
from 
  t1, 
  t2
where 0=0
  and t1.id = t2.id
  and t1.status <> 1
  and t2.kod = 1
  and t2.okv like '%01'
soleil@mmc вне форума Ответить с цитированием
Старый 13.10.2009, 14:56   #5
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Огромное спасибо)))) Вы прям всегда выручаете в SQL
Страх это слабость и потому, кто испугался уже побежден.
Mixasik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация sql запроса в хп eda SQL, базы данных 3 28.07.2009 11:57
Ошибка Sql запроса Yrok БД в Delphi 8 13.03.2009 09:08
Обработка SQL-запроса iid2007 Microsoft Office Access 2 10.07.2008 12:41
1С: debug SQL-запроса. crazy horse SQL, базы данных 0 05.06.2008 08:19