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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2008, 12:37   #11
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Тьфу ты...
Забыл во вложенном запросе from mytable...
А вы ж вроде говорили, что простые запросы умеете составлять - что ж просмотрели-то?

Ну, это будет извращением, SQL вас не поймет...
хм, а чем результат будет отличаться от
select number from table where cod_e<>0 ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.04.2008, 12:39   #12
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
хм, а чем результат будет отличаться от
select number from table where cod_e<>0 ?
Именно тем, что не будут выбраны те Number, для которых существует запись с полями cod_e=0 или text_e='Без ошибок'.
Представленная в таблице информация смахивает на протокол сдачи теста. Первая попытка для номера 2 завершилась с кодом ошибки 1, вторая - с кодом ошибки 3, и тест был сдан только с третьей попытки.
А номера 1 и 4 - хорошие студенты, и сдали тест с первой попытки.
То есть выборка должна дать перечень тех, кто до сих пор безуспешно приходит на сдачу...
Я, по крайней мере, понял так.

Последний раз редактировалось mihali4; 23.04.2008 в 12:45.
mihali4 вне форума Ответить с цитированием
Старый 23.04.2008, 13:01   #13
Uomo
Пользователь
 
Регистрация: 24.10.2007
Сообщений: 19
По умолчанию

Попробую еще раз:
Есть таблица:
Number Cod_E Text_E
1_____ 0_____Без ошибок
2_____ 1_____Ошибка 1
2_____ 3_____Ошибки 3
2_____ 0_____Без ошибок
3_____ 1_____Ошибка 1
4_____ 0_____Без ошибок
Задача: Следует отобрать записи для которых при одинаковых номерах в поле Number, отсутствует значение 0 в поле Cod_E для этих записей.

Кстати: этот запрос:
select * from table where cod_e not in (select * from table where cod_e=0)
не работает, потому как записей этим запросом:
select * from table where cod_e=0
может отбираться несколько.

Запрос предложенный mihali4 :
seleсt number from mytable where not exists (select number from mytable where cod_e=0)
работает, но с неизменным результатом - 0 записей
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 13:03   #14
Uomo
Пользователь
 
Регистрация: 24.10.2007
Сообщений: 19
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Представленная в таблице информация смахивает на протокол сдачи теста. Первая попытка для номера 2 завершилась с кодом ошибки 1, вторая - с кодом ошибки 3, и тест был сдан только с третьей попытки.
А номера 1 и 4 - хорошие студенты, и сдали тест с первой попытки.
То есть выборка должна дать перечень тех, кто до сих пор безуспешно приходит на сдачу...
Я, по крайней мере, понял так.
Ну можно представить и в этом виде.
Но это отправляются сообщения, если оно с ошибкой, то сообщение возвращается с кодом ошибки, и отправляется еще раз, но при этом номер сообщения остается прежним.
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 13:11   #15
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Т.е. при представленных входных данных запрос должен вернуть 1 и 4 ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 23.04.2008, 13:24   #16
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Запрос предложенный mihali4 :
seleсt number from mytable where not exists (select number from mytable where cod_e=0)
работает, но с неизменным результатом - 0 записей
Модифицируем:
seleсt A.number from mytable A where not exists (select B.number,B.cod_e from mytable B where A.number=B.number and B.cod_e=0)
mihali4 вне форума Ответить с цитированием
Старый 23.04.2008, 14:09   #17
Uomo
Пользователь
 
Регистрация: 24.10.2007
Сообщений: 19
Хорошо

От себя добавил еще dictinct и order by number, для удаления дублей и более удобного просмотра.
Цитата:
Сообщение от mihali4 Посмотреть сообщение
Модифицируем:
seleсt dictinct A.number from mytable A where not exists (select B.number,B.cod_e from mytable B where A.number=B.number and B.cod_e=0) order by number
Спасибо большое!!!
Этот запрос действительно работает как надо.
Безгранично благодарен Вам!!!

Последний раз редактировалось Uomo; 23.04.2008 в 14:18.
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 14:12   #18
Uomo
Пользователь
 
Регистрация: 24.10.2007
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
Т.е. при представленных входных данных запрос должен вернуть 1 и 4 ?
Нет, из таблицы представленной выше, должен был отобраться только 3й номер, так как он так и не сдал "тест"
А второй номер, который тоже два раза подряд не сдал тест, на третий раз удачно его сделал.
Что и позволяет сделать запрос созданный mihali4.
За что ему еще раз спасибо!
Uomo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос ссылается на несвязанный с ним запрос kolebatel SQL, базы данных 0 11.06.2008 12:50
Запрос Инночка БД в Delphi 2 23.04.2008 13:19
SQL запрос SERG1980 БД в Delphi 6 19.10.2007 23:03
SQL-запрос Alexey_vyb БД в Delphi 4 22.05.2007 18:52
SQL-запрос Elena БД в Delphi 3 17.05.2007 15:13