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

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

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 17:48   #21
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

Во блин.. весь день вожусь с этим.. никакого толку..
SovereignSun вне форума Ответить с цитированием
Старый 13.01.2012, 18:48   #22
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Попробуйте так
Цитата:
SELECT
a.[Договор],
a.[Услуга],
a.[Счет],
a.[Организация]
FROM
[txt#tab] a,
( SELECT
Mid(a.[Договор], 9, 5) as _Last,
Min(a.[Счет]) AS ID
FROM
[txt#tab] a
group by
Mid(a.[Договор], 9, 5)) b
where
b.ID=a.[Счет]
ReportCube вне форума Ответить с цитированием
Старый 16.01.2012, 10:22   #23
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

Что такое [txt#tab]?
SovereignSun вне форума Ответить с цитированием
Старый 16.01.2012, 10:28   #24
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Это название таблицы, в Вашем случае - [Счета]
ReportCube вне форума Ответить с цитированием
Старый 16.01.2012, 12:42   #25
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

Вопрос почему после таких запросов сбиваются данные полей при выборке?
SovereignSun вне форума Ответить с цитированием
Старый 16.01.2012, 13:34   #26
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Не понял вопрос! Подзапрос возвращает номер первых записей, которые отвечают Вашим условиям. Основной запрос возвращает все поля, номера записей которых соответствуют найденым номерам в подзапросе.
ReportCube вне форума Ответить с цитированием
Старый 16.01.2012, 13:48   #27
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

По вашему запросу как бы ни менял, все равно ошибка, обычно такая: неправильный синтаксис около ключевого слова "FROM"

SELECT
a.[Договор],
a.[Услуга],
a.[Счет],
FROM
Счета a,
( SELECT
Mid(a.[Договор], 9, 5) as _Last,
Min(a.[Счет]) AS ID,
FROM
Счета a
group by
Mid(a.[Договор], 9, 5)) b
where
b.ID=a.[Счет]

Но счет - мне вообще не нужен... в таблице связь с другой таблицей..
1.Ключевое поле Договор.
2.Поля Организация в таблице Счета нет.
3.Поле организация я привыязываю по средству right join из таблицы Договора, (Select * From Счета Left join Договора ON Счета.Договор=Договора.Договор
) почему никто не обратил внимание?
4.В программе после нажатия на запись в первом dbgrid у меня во второй появляються лишь группа записей по совпадению номера договора из первого запроса.
procedure TForm1.DBgridEh2CellClick(Column: TColumnEh);
var string1:string;
begin
string1:=qry1.Fields[0].AsString;
Delete(String1, 1, 6);
//ShowMessage(String1);
qry2.SQL.Clear;
qry2.SQL.Text:='Select * From Договора Left join Счета ON Договора.Договор=Счета.Договор where CAST((CASE WHEN CHARINDEX('+chr(39)+'-'+chr(39)+',Договора.Договор)>0 THEN RIGHT(Договора.Договор,LEN(Договора .Договор)-CHARINDEX('+chr(39)+'-'+chr(39)+',Договора.Договор)) ELSE NULL END) AS varchar(20))='+string1;
//ShowMessage(qry2.SQL.Text);
qry2.Open;
end;
SovereignSun вне форума Ответить с цитированием
Старый 16.01.2012, 13:52   #28
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
...
a.[Счет],
FROM 
Счета a,
...
Лишняя запятая такая маленькая, что ее в упор не видно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.01.2012, 14:08   #29
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

В самом начале Вы перечисляете поля таблицы [Счет] и желаете из этой таблицы получить выборку. В дальнейшем в запросах появляются какие-то Join с таблицами, о составе которых можно только гадать. Мне кажется, что Вам лучше указать сервер БД (судя по запросам MS SQL ?), перечислить нужные Вам таблицы с перечнем полей - тогда можно было бы помочь. А так ...
Не внимательный я - MS SQL не увидел. И, тем не менее, Вы связывает всё по номерам договора. А как выглядит номер договора в таблице договоров? Есть ли там уникальный номер ID для каждого договора? В чём разница между полем "Договор" в таблице "Счета" и "Договора"? Зачем возникает необходимость извлечения части поля "Договор" для связи двух таблиц?

Последний раз редактировалось ReportCube; 16.01.2012 в 14:24.
ReportCube вне форума Ответить с цитированием
Старый 16.01.2012, 15:43   #30
SovereignSun
Форумчанин
 
Регистрация: 22.11.2011
Сообщений: 127
По умолчанию

Таблицу я приводил.. Счет это просто какие-то числа. ID поля никакого в базе данных нет вообще.
Все связи в таблице осуществляються по странным полям, в моем случае в двух таблицах по полю Договор (Счета.Договор и Договора.Договор)
Выглядит он так, как я первом посте написал (и там и там он одинакого выглядит.
разницы между этими полями в таблицах никакой нет. А необходимость, в том что кроме как поле Организация и Договор, больше одинаковых полей в этих двух таблицах нет.
SovereignSun вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как составить запрос по нескольким полям lysyuk1 БД в Delphi 3 17.11.2011 10:13
Составной запрос, как правильно составить? Bendebej SQL, базы данных 10 26.02.2010 20:01
Как составить запрос? jeka5555 SQL, базы данных 3 09.09.2009 10:12
Как составить запрос из каталога? wegeras PHP 1 28.10.2008 13:36
Как правельно составить запрос!! Areostar SQL, базы данных 3 16.02.2008 19:49