|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Доброе времени суток. Помогите с запросом нубу. Есть два тейбла к примеру abonfl_lic schet(N) ... filter_uch(N) ... 23661 ... 1 .. 23662 ... 1 ... 23663 ... 1 ... 23664 ... 2 ... 23665 ... 2 ... oplatfl schet(N) ... sum(N) ... type(L) ... date(D) ... date_month(N) 23661 ... 1,00 ... T ... 01/01/2009 ... 37 23662 ... 2,00 ... T ... 02/01/2009 ... 37 23662 ... 3,00 ... T ... 01/12/2008 ... 36 23663 ... 4,00 ... T ... 02/01/2009 ... 37 23663 ... 5,00 ... T ... 03/01/2009 ... 37 23664 ... 6,00 ... T ... 03/01/2009 ... 37 Надо получить такой курсор sum date 1.00 01/01/2009 6.00 02/01/2009 5.00 03/01/2009 т.е. дата и сумма по этим датам, причем в запросе должны участвовать записи из oplatfl где type=.T. date_month=37 и !! в abonfl_lic у соответственного schet filter_uch=1 (abonfl_lic schet-уникален) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2009, 19:36 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
> Надо получить такой курсор > sum date > 1.00 01/01/2009 > 6.00 02/01/2009 > 5.00 03/01/2009 > т.е. дата и сумма по этим датам, причем в запросе должны участвовать > записи из oplatfl где type=.T. date_month=37 > и !! в abonfl_lic у соответственного schet filter_uch=1 (abonfl_lic > schet-уникален) Так здесь никаких затруднений - все из твоих условий: Select ЧТО from ОТКУДА where ЧТО т.е., смотрим условия задачи: select sum(sum), date from abonfl_lic, oplatfl where abonfl_lic.schet= oplatfl.schet and filter_uch=.t. and type=.T. and date_month=37 into cursor My_Cursor Теперь перепишем более наглядно: select sum(sum), date; from abonfl_lic INNER JOIN oplatfl ON abonfl_lic.schet= oplatfl.schet; where filter_uch and type and date_month=37; into cursor My_Cursor brow Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2009, 04:46 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Так в том то и дело что оба запроса дают одну строку date-первую удовлетворяющую условию в sum-сумма всех записей по условию. т.е в контексте вушейказанного примера будет одна строка - 12.00 01/01/2009 а нужны суммы по каждой из дат ... |
|||
:
Нравится:
Не нравится:
|
|||
20.02.2009, 09:24 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Ап Господа ветераны фокса. Неужели никто не может ответить по данному вопросу. Как обойти sum(sum) без пользовательской функции(через нее работает очень долго, нужен нормальный быстрый запрос). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2009, 20:44 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
rock-n-rollТак в том то и дело что оба запроса дают одну строку date-первую удовлетворяющую условию в sum-сумма всех записей по условию. т.е в контексте вушейказанного примера будет одна строка - 12.00 01/01/2009 а нужны суммы по каждой из дат Ну, если я правильно понял, подставьте еще group by date ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2009, 21:13 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2009, 15:23 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Ага, group by забыл :( Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2009, 06:50 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
благодарю всех ответивших а исче такая ситуация есть табел sum type date_month 1.00 1 1 2.00 2 1 3.00 1 2 4.00 2 2 5.00 1 1 6.00 2 2 можно ли одним запросом суммы по датам и типы в отдельные столбцы type1 type2 date_month 6.00 2.00 1 3.00 10.00 2 заранее благодарен ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2009, 14:24 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Это я так понимаю Cross table выходит Читай тут тынц ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2009, 14:45 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
ещё один тынц по кросстабу ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2009, 10:20 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Не совсем кросс намного проще. У меня известное количество типов. За ссылку спасибо прочел- мало что понял, но кое-что подчеркнул для себя и в принципе справился. Продолжу вопрошать. Ест табл в котором записаны состояния по дням месяца (всегда с учетом количества дней в месяце) например day_first-первый день некого состояния day_last-последний день некого состояния allpl-состояние schet day_first day_last allpl .... 10000 1 6 1 .... 10000 7 18 2 .... 10000 19 31 3 .... 10001 1 31 1 .... И есть курсор в котором количество строк равно количеству дней в месяце day znac znac2 ... 1 1 ... 2 1 ... 3 1 ... ... 31 1 ... надо сделать ОДНИМ быстрым запросом например для schet-100000 day allpl znac 1 1 1 2 1 1 .. 6 1 1 7 2 1 .. 18 2 1 19 3 1 .. 31 3 1 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2009, 09:32 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Код: plaintext
Примерно так можно попробовать. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
schetdaysallpznach100001111000021110000311100004111000051110000611100007211000082110000921100001021100001121100001221100001321100001421100001521100001621100001721100001821100001931100002031100002131100002231100002331100002431100002531100002631100002731100002831100002931100003031100003131100011511000125110001351100014511000155110001651100017711000187110001971100011071100011171100011271100011371100011471100011571100011671100011771100011871100011991100012091100012191100012291100012391100012491100012591100012691100012791100012891 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2009, 16:36 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
даже ещё проще Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.03.2009, 17:17 |
|
Помогитес запросом
|
|||
---|---|---|---|
#18+
Спасибо за все передыдущее. Новая проблемка. Во все книгах пишут что с insert into так можно делать. Я делаю нечто подобное впервые и пишет синтаксическую insert into domschet(num_dom_sc,allpl,when); sele is_otp_sch as num_dom_sc,abonfl.allpl as allpl,i as when from abonfl wher is_otp_sch=nnum_dom_sc and day_first<=i and day_last>=i; and abonfl.schet not in (sele schet as schet from avar_otp_full wher avar_otp_full.day=i) хотя сам селект работает нормально поля имеют ту-же длинну и имя(VFP6) но это не столь спешно а вот исче вымучал запрос SELECT dist tar_days.day as day,abonfl.allpl,abonfl.proj,iif(is_otp,tar_days.t_abon*abonfl.allpl,0000.00000) as abon,; iif((abonfl.is_otp and abonfl.is_otp_sch=0),tar_days.t_otp*abonfl.allpl*koef_cach.kk_otp*xxxx,0000.00000) as otp; FROM abonfl,tar_days,abonfl_lic,koef_cach; WHERE BETWEEN(tar_days.day,abonfl.day_first,abonfl.day_last); and abonfl.schet=cschet; and abonfl_lic.schet=koef_cach.schet and abonfl_lic.schet=abonfl.schet and abonfl_lic.num_kot=tar_days.num_kot; into curs ooo order BY day надо сохраяя все вымученное привязаться к еще одному курсору avar_otp_full c полями schet,day и вместо *xxxx - умножить на 0 если в avar_otp_full есть запись с schet=cschet и day='выбираемый day' и на 1 если таковой записи нет Вот это подскажите Заранее благодарен ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2009, 11:49 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1586615]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
63ms |
get topic data: |
12ms |
get first new msg: |
9ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 321ms |
total: | 499ms |
0 / 0 |