Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.02.2019, 15:01   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 466
Репутация: 16
По умолчанию Sql - Не получается выбрать строки с разными условиями

Доброе время суток,
Суть: есть таблица (DEVICES), в которой, есть ID заявки (PROPOSAL_ID) на работу. По каждой заявке может быть разный вид работ (SORT_WORK_ID), например заявка с PROPOSAL_ID=30 (а также с разными суммами оплат), для которой вид работ: штукатурка, побелка, покраска соответственно с ID: 1, 2, 3 (SORT_WORK_ID) см. рис.


Мне нужно каким-то образом, вытягивать PROPOSAL_ID, только тех заявок, для которых пользователь выделил определенный вид работ.

Например:
- Если пользователь выделил вид работ с SORT_WORK_ID = 1, т.е. «штукатурка», должна находится заявка только с штукотуркой, т.е. PROPOSAL_ID = 25.
- Если пользователь выделил вид работ с SORT_WORK_ID = (1,2), то должны находится только заявки с штукатуркой и побелкой, т.е. PROPOSAL_ID = 28, 29
- Если пользователь выделил вид работ с SORT_WORK_ID = (1,2, 3), то должны находится только заявки с штукатуркой и побелкой и покраской, т.е. PROPOSAL_ID = 30.

Поправка:
И как еще этот запрос ограничить combobox`ом строгий поиск (галочка стоит) или нет (галочки нет):
-- т.е. если строгий, то в результате запроса в него должны входить (PROPOSAL_ID) только те виды работ, которые выбрал пользователь (например пользователь выбрал SORT_WORK_ID = 1, тогда должна выбираться заявка с PROPOSAL_ID = 25 или SORT_WORK_ID in (1, 2), то PROPOSAL_ID = 28, 29);
-- если не строгий, то в результат могут входить заявки с джругими видами работ SORT_WORK_ID = 1, то в результат попадут все заявки, т.к. все они имеют вид работы равный «1»

Мой вариант (но он не совсем рабочий - при SORT_WORK_ID in (1,2,3) - не работает и не учитывает - "строгий" поиск или нет):

Код:
select q.proposal_ID, count(*) from (select PROPOSAL_ID, SORT_WORK_ID, count(*) p from DEVICES D where
SORT_WORK_ID in (1,2)
group by PROPOSAL_ID, D.SORT_WORK_ID
having count(*) > 1) q
group by PROPOSAL_ID
having count(*) > 1
Заранее спасибо за ответ

P.S.
sql, dialect 3, firebird 3.0.3
Изображения
 

Последний раз редактировалось KBO; 11.02.2019 в 15:21.
KBO вне форума   Ответить с цитированием
Старый 11.02.2019, 15:51   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,872
Репутация: 6688
По умолчанию

Код:
SELECT Q.proposal_id
  FROM (
    SELECT proposal_id, sort_work_id
      FROM Devices
      GROUP BY proposal_id, sort_work_id) Q
  GROUP BY Q.proposal_id
  HAVING Count(*)=2 AND SUM(CASE WHEN Q.sort_work_id IN (1,2) 1 ELSE 0 END)=2   //строгое

  HAVING Count(*)>=2 AND SUM(CASE WHEN Q.sort_work_id IN (1,2) 1 ELSE 0 END)=2  //не строгое
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 11.02.2019, 16:31   #3
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 466
Репутация: 16
По умолчанию

Спасибо большое

- только одна синтаксическая оплошность в "case" перед "1" забыли "then" указать

А так работает!!!
KBO вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбрать все строки с разными значениями столбца (MySQL) Zurav SQL, базы данных 5 20.02.2016 13:23
Удаление строки с условиями siv14 Microsoft Office Excel 3 28.01.2015 09:39
SOS Не получается создать связь между разными файлами Юля Ж Microsoft Office Excel 4 19.09.2012 12:55
Перенос вычесления в разные ячейки с разными условиями Scheremet Microsoft Office Excel 18 09.01.2012 19:16
Как удалить пустые строки с условиями? ru3000 Microsoft Office Excel 9 30.06.2009 00:13


22:10.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.