|
|
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
DIMM@ Если я правильно понял в тех строках где Table2.ID = Table3.ID нужно заменить Quant на Table1.Quant - Table2.Quant Select IIF(Table2.ID = Table3.ID ,T1.Quant,Table1.Quant - Table2.Quant )... Попробуй может получится:) Граждане, а почему так нельзя сделать. Или я чего не так понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 14:57 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Dima TНа крайняк при обработке - если Quant2 = NULL то брать Quant1 иначе Quant2 Код: plaintext 1. 2. 3. 4. 5. вырезает из результата те строки которых нет в table2. вторые сутки уже кручу в разные стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 14:58 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
вопщем краткая иллюстрация того чо надо (с этого начать стоило бы наверно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:07 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Тогда делай вообще без вычислений Код: plaintext 1. 2. 3. 4. 5. 6. 7. А уже на клиенте вычитай из Quant1 те значения Quant2, которые отличны от NULL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:08 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
firererвопщем краткая иллюстрация того чо надо (с этого начать стоило бы наверно) Ну так это обычный INNER JOIN SELECT ; Table1.ID, ; Table1.Quant-Table2.Quant as Quant1 ; FROM Table1 ; INNER JOIN Table2 ON Table1.ID = Table2.ID ; WHERE Table1.Quant > 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:12 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
ВладимирМТогда делай вообще без вычислений А уже на клиенте вычитай из Quant1 те значения Quant2, которые отличны от NULL. после получения результатов я уже с ними ничего сделать не могу. результат запроса является поставщиком данных для табличного поля. там все уже должно быть сформировано в том виде в котором должно быть показано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:15 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:26 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Без проверки на NULL не обойтись 1. Сделай COM-объект на фоксе и юзай его из 1С 2. Попробуй NVL(Table1.Quant - Table2.Quant, 0) заменить на - isnull(Table1.Quant - Table2.Quant, 0) - iif(isnull(Table2.Quant), Table1.Quant, Table1.Quant - Table2.Quant) 3. Попробуй фоксовый ODBC-драйвер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:28 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Так попробуй Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:34 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
опечатка Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:35 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
DIMM@Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 Завис наглухо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 15:57 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
вопщем получился воттакой запрос: Select Orders.NomID As NomID, Orders.Name As Name, Orders.Art As Art, Orders.QuantOrder As QuantOrder, Rests.QuantRest As QuantRest, IIf(Orders.NomID = Rests.NomID, Orders.QuantOrder - Rests.QuantRest, Orders.QuantOrder) As Necessary From ( Select Nom.ID As NomID, Nom.Descr As Name, Nom.sp175 As Art, Reg.sp479 As QuantOrder From sc60 As Nom , RG480 As Reg Where (Reg.sp478 = Nom.ID) AND (Reg.Period = {d '2006-02-01'}) AND (Reg.sp479 > 0) ) As Orders , ( Select Reg.sp99 As NomID, Sum(Reg.sp101) As QuantRest From RG98 As Reg Where (Reg.Period = {d '2006-02-01'}) Group By Reg.sp99 ) As Rests Where (Rests.NomID = Orders.NomID) AND (Orders.QuantOrder > Rests.QuantRest) Всем спасибо Отдельно спасибо Dimm@ за конструкцию IIf() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:21 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Незачто. Я тут по твоему примеру таблицы создал, и прогнал, как я советывал. Оно конечно не повисло и выборку правильно сделало, только сдублировало все Таbl1.ID по три раза. Подумал и понял что сглупил(звиняй что на ложный путь поставил, счас сижу думаю как тут завернуть что б правильно получалось(для себя)). Счастливо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:30 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Потому что добавочка нужна: Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 AND Table1.ID = Table2.ID ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:36 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
AleksMedПотому что добавочка нужна: Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 AND Table1.ID = Table2.ID у меня так и есть: firerer Where (Rests.NomID = Orders.NomID) AND (Orders.QuantOrder > Rests.QuantRest) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:39 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
AleksMedПотому что добавочка нужна: Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 AND Table1.ID = Table2.ID Возможно мы по разному поняли условие. Здесь надо брать все tabl1.Id, а по вашему не равные tabl2.Id исключаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:40 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
DIMM@ AleksMedПотому что добавочка нужна: Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 AND Table1.ID = Table2.ID Возможно мы по разному поняли условие. Здесь надо брать все tabl1.Id, а по вашему не равные tabl2.Id исключаться Точно. Извиняюсь. :) И в посте выше не INNER JOIN, а LEFT JOIN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:43 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
DIMM@ Возможно мы по разному поняли условие. Здесь надо брать все tabl1.Id, а по вашему не равные tabl2.Id исключаться точно. исключаюца. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:48 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
AleksMed DIMM@ AleksMedПотому что добавочка нужна: Select Table1.ID,; IIF(Table1.ID = Table2.ID ,Table1.Quant - Table2.Quant,Table1.Quant ); From Table1,table2; where Table1.Quant>0 AND Table1.ID = Table2.ID Возможно мы по разному поняли условие. Здесь надо брать все tabl1.Id, а по вашему не равные tabl2.Id исключаться Точно. Извиняюсь. :) И в посте выше не INNER JOIN, а LEFT JOIN А вы не могли бы посоветовать, как модернизировать мой запрос, что бы он правильно работал(не усложняя при этом сильно его структуру, и без JOIN)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:48 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Без JOIN наверное не получится :) А посему скрести мой последния запрос, поменяв INNER JOIN на LEFT JOIN, и добавив свой IIF() для разруливания NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:54 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
firerer DIMM@ Возможно мы по разному поняли условие. Здесь надо брать все tabl1.Id, а по вашему не равные tabl2.Id исключаться точно. исключаюца. но сдесь чота предумывать надо. потомучто иначе запрос создает все возможные комбинации строк двух таблиц. а у мене в каждой по 5 тыщ их. вот комп и виснет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 16:57 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
уже петнацать менут щетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 17:02 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
Интересные результаты. вот что я получаю при моём запросе(из табл. примера Firevare): id__Quanum 12 - -1 12 - 1 12 - 1 13 -5 13 -5 13 -5 11 -4 11 -4 11 -1 Потом добавляю GROUP BY Table1.id: id__Quanum 11 -1 12 -1 13 -5 Как видно для id=12 было значение -1, а в Group стало 1, а для id=11 почему то 1 и 1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 17:07 |
|
||
|
Сложный запрос
|
|||
|---|---|---|---|
|
#18+
DIMM@Интересные результаты. вот что я получаю при моём запросе(из табл. примера Firevare): id__Quanum 12 - -1 12 - 1 12 - 1 13 -5 13 -5 13 -5 11 -4 11 -4 11 -1 Потом добавляю GROUP BY Table1.id: id__Quanum 11 -1 12 -1 13 -5 Как видно для id=12 было значение -1, а в Group стало 1, а для id=11 почему то 1 и 1 предпологаю шо берецо последнее значение для группировки. функций то нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2006, 17:14 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33568262&tid=1592210]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 480ms |

| 0 / 0 |
