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

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

Проблемма с SQL запросом. [D7, Paradox]


alpine ©   (2005-10-05 13:57:00) 

Делаю запрос
Select T.KOD,T.FULLNAME,T.GRUP,T.EDIZM,T.SEASON,T.COUNTRY,T.ORGIN,T.PIC,T.CZrub,T.CZye,T.NAZENKA,T.KURS,T.OLDCZrub,T.DATAOLDCZ, T.REALIS,T.CP1rub, T.CP1ye,T.OLDCP1rub,T.DATAOLDCP1,T.CP2rub,T.CP2ye,T.NAZENKA2,T.CP3rub,T.CP3ye,T.NAZENKA3,T.SERTIFICATE,T.GTD,T.GUARANTEE ,T.DOP,T.INFO,Z.KOLICHESTVO,Z.ID_SCHETA,Z.NUM_SCHETA,Z.OTKUDA,Z.KUDA,Z.DATA,Z.NOTE,Z.SUMMA,SUM(Z.KOLICHESTVO) from "tovar.db" T, "Zakupka.db" Z Where Z.KOD=T.KOD AND Z.ID_SCHETA='+DMFrm.ZAKUPKAQUERY.FieldByName('ID_SCHETA').AsString+'GROUP BY T.KOD,T.FULLNAME,T.GRUP,T.EDIZM,T.SEASON,T.COUNTRY,T.ORGIN,T.PIC,T.CZrub,T.CZye,T.NAZENKA,T.KURS,T.OLDCZrub,T.DATAOLDCZ, T.REALIS,T.CP1rub, T.CP1ye,T.OLDCP1rub,T.DATAOLDCP1, T.CP2rub,T.CP2ye,T.NAZENKA2,T.CP3rub,T.CP3ye,T.NAZENKA3,T.SERTIFICATE,T.GTD,T.GUARANTEE,T.DOP,T.INFO,Z.KOLICHESTVO,Z.ID_ SCHETA,Z.NUM_SCHETA,Z.OTKUDA,Z.KUDA,Z.DATA,Z.NOTE,Z.SUMMA'

Выводит всё нормально, а вот SUM(Z.KOLICHESTVO) не работает ! То есть не подсчитывает одинаковый товар во все базе. ПОМОГИТЕ !


evvcom   (2005-10-06 08:58:00) [1]


> Не выводит все записи с таблицы ТОВАР !

И не выведет. Вот этот фильтр:

> Where Z.ID_SCHETA='+DMFrm.ZAKUPKAQUERY.FieldByName('ID_SCHETA').
> AsString

их отсеивает. Ты уж определись, надо все записи или все же надо их фильтровать.


alpine   (2005-10-05 18:07:00) [2]

2 msguns

Это не моё было .. Я доделываю программу .. Меня сказали ничего не надо !

Я её и так и сяк, но она зараза не выводит так, как надо .. Не выводит все записи с таблицы ТОВАР !


ANB   (2005-10-05 17:38:00) [3]


> alpine   (05.10.05 16:41) [11]
- записей вообще нету или не все ? Или не работает группировка ?
Если 1, то плохая связка (коды не равны), если 2 - то объясни, что лежит в закупках. Имхо, поля закупок в Group By тебе все ломают. И логика непонятна - зачем тебе выводить поля из закупок, если ты суммируешь количество по товару.


msguns   (2005-10-05 17:37:00) [4]

Вот здесь
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1128259959&n=1
тебе ведь все было понятно.

К указанной схеме надо просто добавить агрегаты

Сколько можно своего монстера показывать - народ же со страху поразбегается ;))

А вообще привыкай для описания траблы использовать схемы с несколькими простыми полями, ибо совершенно нечитабельно и прежде чем разобраться в сути, надо как по углям пршагать по всем товом KOLICHECTV`ам ;))


Sergey13   (2005-10-05 17:00:00) [5]

Попробуй хоть как-то форматировать свои запросы. Это не только читаемость улучшает, но и мысли иногда в порядок приводит. И ошибки еще, которые уже якобы исправили ([3]), переписывать заново не следует.


alpine   (2005-10-05 16:41:00) [6]

сделала так

Select T.KOD,T.FULLNAME,T.GRUP,T.EDIZM,T.SEASON,T.COUNTRY,T.ORGIN,T.PIC,T.CZrub,T.CZye,T.NAZENKA,T.KURS,T.OLDCZrub,T.DATAOLDCZ,  T.REALIS,T.CP1rub, T.CP1ye,T.OLDCP1rub,T.DATAOLDCP1,T.CP2rub,T.CP2ye,T.NAZENKA2,T.CP3rub,T.CP3ye,T.NAZENKA3,T.SERTIFICATE,T.GTD,T.GUARANTEE  ,T.DOP,T.INFO,Z.KOLICHESTVO,Z.ID_SCHETA,Z.NUM_SCHETA,Z.OTKUDA,Z.KUDA,Z.DATA,Z.NOTE,Z.SUMMA,SUM(Z.KOLICHESTVO) from "tovar.db" T LEFT JOIN "Zakupka.db" Z ON (Z.KOD=T.KOD) Where Z.ID_SCHETA='+DMFrm.ZAKUPKAQUERY.FieldByName('ID_SCHETA').AsString+'GROUP BY T.KOD,T.FULLNAME,T.GRUP,T.EDIZM,T.SEASON,T.COUNTRY,T.ORGIN,T.PIC,T.CZrub,T.CZye,T.NAZENKA,T.KURS,T.OLDCZrub,T.DATAOLDCZ,  T.REALIS,T.CP1rub, T.CP1ye,T.OLDCP1rub,T.DATAOLDCP1, T.CP2rub,T.CP2ye,T.NAZENKA2,T.CP3rub,T.CP3ye,T.NAZENKA3,T.SERTIFICATE,T.GTD,T.GUARANTEE,T.DOP,T.INFO,Z.KOLICHESTVO,Z.ID_  SCHETA,Z.NUM_SCHETA,Z.OTKUDA,Z.KUDA,Z.DATA,Z.NOTE,Z.SUMMA'

Всё равно не выводит все записи из таблиы ТОВАР


evvcom   (2005-10-05 16:22:00) [7]

select ...
from ТОВАР t
left join ЗАКУПКА z
on z.id=t.id


alpine   (2005-10-05 16:16:00) [8]

Покажите кто-нибудь на примере плиззз ...


Desdechado   (2005-10-05 16:15:00) [9]

>  вывел все записи с таблицы ТОВАР, а не только те которые соответствуют с закупки
попробуй использовать UNION


evvcom   (2005-10-05 16:05:00) [10]


> (не вижу агрегирования по sum)

Оно есть. С полосой прокрутки надо поиграться. А вообще реклама кое-что закрывает.


Sergey13   (2005-10-05 15:02:00) [11]

2[4] alpine   (05.10.05 14:59)
Про Join-ы смотри в справке.


msguns   (2005-10-05 15:00:00) [12]

Зубодробительный запрос ;)
А имена полей и таблиц !?
Повбывав бы


alpine   (2005-10-05 14:59:00) [13]

А нельзя сделать такой запрос , чтобы он вывел все записи с таблицы ТОВАР, а не только те которые соответствуют с закупки ? Чтоб и те и те были ...


alpine   (2005-10-05 14:54:00) [14]

2 Sergey13

В группировке учавствует поле Z.KOLICHESTVO по которому ты еще и сумму считаешь. Это фигня.

Вы правы !


Sergey13   (2005-10-05 14:27:00) [15]

2 alpine   (05.10.05 13:57)
Запрос неправильный. В группировке учавствует поле Z.KOLICHESTVO по которому ты еще и сумму считаешь. Это фигня. Странно, что вообще отрабатывает. И вообще из таблицы "Zakupka.db" Z не должно быть столько полей. У них же практически всегда разная комбинация значений.


ANB   (2005-10-05 14:17:00) [16]


> alpine   (05.10.05 13:57)

1. Убери +DMFrm.ZAKUPKAQUERY.FieldByName('ID_SCHETA').AsString+ (замени на параметр)
2. Запрос не корректно запостен (не вижу агрегирования по sum)
3. Не считает из-за набора полей в group by, какое то поле мешает (разное при одинаковом товаре)


Наверх

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