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

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

Select [D7, Paradox]


Страницы:   1 2

Pako ©   (2004-01-20 08:40:00) 

Добрый день! Есть запрос Select, который по нескольким условиям выбирает записи, но теперь мне необходимо выбрать лишь ту запись, на которой, например, стоит курсор в гриде.


mtb   (2004-01-20 13:04:00) [1]

наверное используя JOIN
правда не знаю как быстро это можно сделать в Paradox

возьми таблицу из которой должны выбираться все записи и подцепляй по одной оставшиеся таблицы

если есть возможность экспортировать в Access, MSSQL там есть визрды будет полегче создать запрос и затем оптимизировать


Tt   (2004-01-20 13:03:00) [2]

Не знаю, как в твоей БД.
Для SQL-х баз есть понятие правого / левого объединения
right/left outer join
например, объединить табл.Т1 с Т2, чтобы попали все записи из Т1
select t1.*, t2.*
from t1 left outer join t2 on t1.cod = t2.cod

Но, честно говоря, с таким большим кол-вом таблиц замучаешься делать внешние объединения


Pako   (2004-01-20 12:47:00) [3]

Как сделать, чтобы запрос вернул все записи студентов, независимо указаны ли родители, страна и т.п.?


Pako   (2004-01-20 12:42:00) [4]


> Tt (20.01.04 12:24) [25]


извинясь, действительно его нет и в полном запросе, ведь он возвращает только те записи у которых все поля заполнены


Tt   (2004-01-20 12:24:00) [5]

Ну а в полном запросе (без (s.number= :bilet) ) есть этот студент?
Может, у него не указаны сведения о родителях, или стране или еще что-нибудь


Pako   (2004-01-20 12:16:00) [6]

подставляла, не возвращает!


Pako   (2004-01-20 12:16:00) [7]

подсталяла, не возвращает


Tt   (2004-01-20 12:12:00) [8]

Тогда предыдущие авторы правы :),
бери запрос, вместо параметра подставляй конкретное зн-е студ.билета, и смотри, вернет ли запись


Pako   (2004-01-20 12:09:00) [9]


> Точно номер билета помещается в Integer? В самой таблице
> он какого типа?

Short


Pako   (2004-01-20 12:06:00) [10]


> Sergey13 © (20.01.04 11:54) [17]

Если путь решения проблемы таков
> И тогда надо постепенно наращивать запрос до рабочего состояния
> для выявления ошибки.

то я так и делала, плакать не надо, а путь ты действительно "нарисовал":))твои слова можно читать "разбирайся сама и не приставай"
ок, спасибо всем кто проявил внимание:))


Tt   (2004-01-20 12:03:00) [11]

Точно номер билета помещается в Integer? В самой таблице он какого типа?


mtb   (2004-01-20 11:58:00) [12]

а нельзя ли Query.SQL заполнить во время выполнения программы,
используя TString

var
sss:TString;
.......

sss.add("select distinct g.Grup, s.Number, f.Surname,n.name, p.patronymic, s.BirthDay,c.country,");
sss.add("s.documentseries,s.documentnumber,s.documentdate,");
.......

sss.add("where s.number="+ значение_bilet+" and (s.kodgrup=g.kodgrup) and (s.kodsurname=f.kodsurname)and (s.kodname=n.kodname)");
.....

DM.qLKarta.Close;
DM.qLKarta.SQL.Clear;
DM.qLKarta.SQL:=sss;
DM.qLKarta.Open;


Sergey13   (2004-01-20 11:54:00) [13]

2Pako (20.01.04 11:47) [16]
>вам весело:)) а мне отчет добавить нужно!
А че мне плакать что ли. Я ж тебе нарисовал путь решения проблемы. А уж решать проблему тебе... А я уж так и быть, всплакну. 8-)


Pako   (2004-01-20 11:47:00) [14]


> >но разработчик решил хранить ФИО в отдельных справочниках,
>
> Повезло вам с разработчиком. 8-)

вам весело:)) а мне отчет добавить нужно!


Sergey13   (2004-01-20 11:43:00) [15]

2Pako (20.01.04 11:33) [14]
>Как вы видите весь этот громоздкий запрос лишь вытаскивает данные из справочников для таблицы студент
Вот и проверь, вернет ли запрос оз одной таблицы Студент. Если вернет, то проблема не в синтаксисе и не в параметрах, а в условиях запроса. И тогда надо постепенно наращивать запрос до рабочего состояния для выявления ошибки. Я лично всегда так делаю на больших запросах.

>но разработчик решил хранить ФИО в отдельных справочниках,
Повезло вам с разработчиком. 8-)


Pako   (2004-01-20 11:33:00) [16]

Без парам запрос выполняется правильно, но я получаю все записи таблицы Student, что в принципе нужно. Но нужен еще один запрос только с одной текущей записью (ее нужно показать в отчете).
Как вы видите весь этот громоздкий запрос лишь вытаскивает данные из справочников для таблицы студент
> И еще тройное упоминание во FROM таблиц Surname , Name ,
> Patronymic оправдано (мне просто лень в запросе разбираться
> 8-)?

но разработчик решил хранить ФИО в отдельных справочниках, соответственно в таблицах Student, Mother, Father в полях фамилия, имя, отчество хранятся только коды, вот!


mtb   (2004-01-20 11:09:00) [17]

попробуй в коде полученный запрос отправить в текстовый файл
или компонент (мемо), без парам
и проверить его выполнимость, может и без ParamByName("bilet")
число записей 0


Sergey13   (2004-01-20 11:06:00) [18]

А если попробовать fmEditStudent.edNumber. asInteger? Это шаманство конечно, но вдруг....
Или не выполняется для конкретного студента какое то условие - скорее всего (таблиц-условий достаточно много). Попробуй упростить одиночный запрос до минимума (только таблица Student) и посмотри работает ли. Далее наращивай до рабочего запроса постепенно по одной таблице.
И еще тройное упоминание во FROM таблиц Surname , Name , Patronymic оправдано (мне просто лень в запросе разбираться 8-)?


Плохиш_   (2004-01-20 10:58:00) [19]

>Pako

А не пробовал запрос с join сделать, наглядней будет и проблему сам сразу найдёшь.


Pako   (2004-01-20 10:50:00) [20]


> Че то ты путаешь

да ты прав, RxQuery конечно но я не использую MacroByName, я же сказала что это опечатка, на самом деле
DM.qLKarta.Close;
DM.qLKarta.ParamByName("bilet").AsInteger:=fmEditStudent.edNumber.Value;
DM.qLKarta.Prepare;
DM.qLKarta.Open;


Страницы:   1 2

Наверх

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