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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.04.2008, 11:11   #1
Uomo
Пользователь
 
Регистрация: 24.10.2007
Сообщений: 19
По умолчанию SQL запрос

Есть таблица:
Number Cod_E Text_E
1 0 Без ошибок
2 1 Ошибка 1
2 3 Ошибки 3
2 0 Без ошибок
3 1 Ошибка 1
4 0 Без ошибок

Мне нужно отобрать записи в которых есть ошибки. Для примера из вышеприведенной таблицы следует отобрать только запись с номером 3.
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 11:14   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Сюда заглядывали? http://www.programmersforum.ru/showthread.php?t=1589
Если нет, лучше заглянуть и вопрос исчерпается...
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 23.04.2008, 11:23   #3
Uomo
Пользователь
 
Регистрация: 24.10.2007
Сообщений: 19
По умолчанию

Цитата:
Сообщение от AlDelta Посмотреть сообщение
Сюда заглядывали? http://www.programmersforum.ru/showthread.php?t=1589
Если нет, лучше заглянуть и вопрос исчерпается...
Спасибо.
Заглядывал, пробовал.. но данный запрос составить не получилось, поэтому и написал в форум.
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 11:36   #4
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

select *
from таблица
where Number=3
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 23.04.2008, 11:53   #5
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_____Без ошибок

Моя задача в данном случае не просто указать номер записи которая имеет ошибку, а найти это с помощью запроса.
Я пробовал что то такое:
select * from Accept_Mess where Cod_E=0 group by number having Cod_E<>0
Но к сожалению он выдает ошибку.
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 12:07   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

По-моему так:
seleсt number from mytable where not exists (select number where text_e='Без ошибок')
или
seleсt number from mytable where not exists (select number where cod_e=0)
mihali4 вне форума Ответить с цитированием
Старый 23.04.2008, 12:11   #7
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

А так переписать?

select *
from таблица
where Text_E<>"Без ошибок"

P.S.: Поздно дошло что хочет автор, наверное заработался я...
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

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

Цитата:
Сообщение от AlDelta Посмотреть сообщение
А так переписать?

select *
from таблица
where Text_E<>"Без ошибок"

P.S.: Поздно дошло что хочет автор, наверное заработался я...
С таким запросом он отберет, все сообщения с ошибками...
В этот же запрос попадет и №2, у которого так же есть состояние "Без ошибок"

Вот этот вариант интересен:
seleсt number from mytable where not exists (select number where cod_e=0)
только наверное после where нужно еще указать имя поля, в данном случае number.
Но к сожалению запрос завершается с ошибкой:
Ошибочная инструкция SQL; предпологалось использование 'DELETE', 'SELECT' и т.д.

Пробовал запрос:
seleсt number from mytable where number not in (select number from mytable where cod_e=0)
но он приводит к той же ошибке

Последний раз редактировалось Uomo; 23.04.2008 в 12:30.
Uomo вне форума Ответить с цитированием
Старый 23.04.2008, 12:30   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Uomo Посмотреть сообщение
С таким запросом он отберет, все сообщения с ошибками...
В этот же запрос попадет и №2, у которого так же есть состояние "Без ошибок"

Вот этот вариант интересен:
seleсt number from mytable where not exists (select number where cod_e=0)
только наверное после where нужно еще указать имя поля, в данном случае number.
Но к сожалению запрос завершается с ошибкой:
Ошибочная инструкция SQL; предпологалось использование 'DELETE', 'SELECT' и т.д.
Тьфу ты...
Забыл во вложенном запросе from mytable...
А вы ж вроде говорили, что простые запросы умеете составлять - что ж просмотрели-то?
Цитата:
только наверное после where нужно еще указать имя поля
Ну, это будет извращением, SQL вас не поймет...
mihali4 вне форума Ответить с цитированием
Старый 23.04.2008, 12:35   #10
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

1. вопрос -то ты так и не написал.
либо тебе надо вывести записи в которых есть ошибка
Цитата:
Мне нужно отобрать записи в которых есть ошибки
решение тебе написали:
Цитата:
select *
from таблица
where Text_E<>"Без ошибок"
(хоть и лучше исопльзовать не такое условие,а проверять код ошибки, ну да невжано)
Цитата:
Моя задача в данном случае не просто указать номер записи которая имеет ошибку, а найти это с помощью запроса.
а вот это с русским языком вообще ничего общего не имеет. описывайте задачу почлеовечески, а томожно как угоднго написать:
Код:
select * from table where cod_e<>0
Код:
select * 
from таблица 
where Text_E<>"Без ошибок"
Код:
select * from table where cod_e not in (select * from table where cod_e=0)
продоллжать можно еще долго, только все эти запросы делают одно и тоже. Так что описывайте вопрос снчала.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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