![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Select [D7, Paradox]
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;