Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL [D7, Paradox]


Страницы:   1 2

Pako ©   (2003-12-15 14:00:00) 

Уважаемые мастера, помогите найти ошибку в запросе, плиз
дельфи на выполнение этого запроса не ругается, но результат 0 записей
SELECT Z.Razdel, Z.Project, C.Name_Prog, S.Name, P.FAM||" "||P.Nam||" "||P.Par As FullName
FROM Zayavki.DB Z, Char_Prog.DB C, Status_Prog.DB S Personal.DB P
WHERE Z.Konkurs=C.Kod_Prog AND C.Status=S.Kod AND Z.Rukovod=P.Number


sniknik   (2003-12-16 13:36:00) [1]

> во всех таблицах только по одному уникальному ключу
вот по ним связь и делай (по ключам)


Pako   (2003-12-16 13:32:00) [2]


> null могут быть?

да
во всех таблицах только по одному уникальному ключу


Кщд   (2003-12-16 13:27:00) [3]

>а C.Kod_Prog может быть null?
>да может быть
вот этих записей (с C.Kod_Prog=null), согласно Вашему запросу, вы и не увидите в результирующем наборе.
ставьте просто join и разгребайте.
и прочитайте ж наконец-то об объединениях


sniknik   (2003-12-16 13:26:00) [4]

Pako (16.12.03 12:55) [25]
и ты делаеш связь по несуществующим данным и удивляешся почему там ничего нет?

старанно было бы наоборот если бы было.

Pako (16.12.03 13:04) [29]
после стольких повторений, и отказов с твоей стороны что это не так, и получить подтверждение....
тут только по гусарски высказатся хочется, да так что это будет именно в тему ветки.

Pako (16.12.03 13:23) [33]
а еще молчиш как партизан. и проверки что предлагают не делаеш.


Pako   (2003-12-16 13:23:00) [5]

ну запуталась я в этом запросе совсем:)))


Silver Alex   (2003-12-16 13:20:00) [6]


> На какие??? Вы то их сами сформулировать можете? Такое ощущение
> что все на разных языках говорят!


повторю

Тип полей Programm.Status , Status.Kod, null могут быть?Foreign key есть?
напиши
select * from Programm p
where
exists (select * from Status s
where
P.Status=s.Kod)
хоть что нибудь вернет?


Кщд   (2003-12-16 13:15:00) [7]

Pako (16.12.03 13:04) [29]
а Вы сами смысл запроса, который Вы привели последний раз понимаете?
советы - штука хорошая, но и самому задумываться - не лишнее.
да и прочитать о left/right join неплохо б.


Pako   (2003-12-16 13:14:00) [8]


> Ты бы на вопросы ответила

На какие??? Вы то их сами сформулировать можете? Такое ощущение что все на разных языках говорят!

а C.Kod_Prog может быть null?
да может быть, но можно понять и по-другому (типа это поле вообще пустое в таблице)


Pako   (2003-12-16 13:04:00) [9]

Плохиш_ и Кщд вы тему форума не перепутали случайно???


Silver Alex   (2003-12-16 13:01:00) [10]


> Pako (16.12.03 12:55) [25]

Правильно, но мы то не знаем что у тебя творится.Может нет там записей вообще, или они разные.Ты бы на вопросы ответила может сообща и побороли бы багу


Кщд   (2003-12-16 13:00:00) [11]

я не гусар, но, кроме RTFM, добавить нечего


Плохиш_   (2003-12-16 12:58:00) [12]

>Pako (16.12.03 12:55) [25]

ээээ, хмм .... Гусары! молчать!!!


Pako   (2003-12-16 12:55:00) [13]


> Silver Alex © (16.12.03 12:38) [23]

Но этот вернет значение только в том случае, если существует запись в поле Status.
Мне нужно, чтобы попали заявки с программами и где указан статус и где не указан. Точнее - должны попасть все заявки независимо заполнены ли указанные поля или нет. (Т.е. если была заявка - она по-любому должна отобразиться, даже если у нее указано только наименование проекта)


Кщд   (2003-12-16 12:41:00) [14]

а C.Kod_Prog может быть null?


Silver Alex   (2003-12-16 12:38:00) [15]


> Pako (16.12.03 12:25) [20]

это вобщем то и по запросу видно.Тип полей Programm.Status , Status.Kod, null могут быть?Foreign key есть?
напиши
select * from Programm p
where
exists (select * from Status s
where
P.Status=s.Kod)
хоть что нибудь вернет?


Pako   (2003-12-16 12:36:00) [16]

Да как же не существует, когда для каждой программы указан статус!!! Точно есть две записи 2=2, (федеральная), несоклько 5=5(международная и т.п.)


Плохиш_   (2003-12-16 12:30:00) [17]

>Pako (16.12.03 12:25) [20]

Значит несуществует таких статусов:
C.Status = S.Kod


Pako   (2003-12-16 12:25:00) [18]

Есть следующие таблицы:
- "Заявки" из всех полей нас интересует Z.Razdel и Z.Project (наименование раздела программы и наименование проекта соответственно), связана с "Программы" (Zayavki.Konkurs=Programm.Kod_Prog)
- "Программы" - поле C.Name_Prog (наименование раздела программы)

- "Статус программы" - S.Name (статус программы, например, федеральная, региональная и т.п), связана с "Программы" (Programm.Status=Status.Kod)

- "Персоналии" - из полей P.FAM||" "||P.Nam||" "||P.Par As FullName получаем ФИО, связана с "Заявки" (Zayavki.Rukovod=Person.Kod)

Надо получить список всех заявок.
Запрос

> Pako (16.12.03 09:06) [16]

возвращает все заявки, но без указания статуса, вот

Со всеми бывает , что элементарного не видишь:))
Может кто-нибудь поможет разобраться?


Pako   (2003-12-16 10:41:00) [19]


> Где же в запросе вы получаете поле C.Status ?

Веселю:)))
В С.Status только код, а в S.Name как раз наименование "статуса", его я и хочу получить:)))


Silver Alex   (2003-12-16 10:13:00) [20]

посмотреть бы структуру таблиц и их связи


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо