|
помогите совместить таблицы без декартова умножения!
|
|||
---|---|---|---|
#18+
Прошу помощи специалистов! Надо совместить таблицы без декартова умножения! Есть две таблицы, списки документов с их реквизитами, надо совместить таблицы по двум полям - Дата и Сумма. Без перебора строк, в одном запросе. У меня есть: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
как их объединить, чтобы не раздваивались строки ни первой ни второй таблицы, а там где ДатаДок и СуммаДок совпадают - Контр, НомерДок, ДатаДок, СуммаДок, Контр2, НомерДок2 встали в одну строку, а где не нашли для себя соответствия - было пусто. Проблема в том, что каждый документ только в одной строке должен участвовать и права и слева. Прочитала, что можно пронумеровать строки. Это бы решило проблему, если бы можно было пронумеровать документы в пределах одного дня, тогда бы я написала FULL JOIN (таб1.ДатаДок=таб2.ДатаДок) AND (таб1.СуммаДок=таб2.СуммаДок) AND (таб1.НомерВДне=таб2.НомерВДне), но как этот номер получить? Может есть в Фоксе аналог функции SQL: ROW_NUMBER()? Мне надо чтобы работало в OLE DB провайдере... Буду очень благодарна за советы! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2014, 13:57 |
|
помогите совместить таблицы без декартова умножения!
|
|||
---|---|---|---|
#18+
Если пара (ДатаДок, СуммаДок) уникальны, то можно их взять за ключ. Код: sql 1.
Нася85Может есть в Фоксе аналог функции SQL: ROW_NUMBER()? Мне надо чтобы работало в OLE DB провайдере... Есть RECNO() но она не работает в SQL-запросах, и данные задачи обычно решают без использования SQL. VFPOLEDB это не совсем фокс, там есть ограничения по сравнению с полноценным фоксом. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2014, 14:05 |
|
помогите совместить таблицы без декартова умножения!
|
|||
---|---|---|---|
#18+
Dima T, Спасибо за ответ! В том то и дело, что не уникальны, у меня так раздваиваются документы. Надо просто найти к каждому документу продажи - одну оплату, и больше ее не использовать. И показать все оставшиеся без пар. Recno() пробовала, там во все строки ставит одно значение 24788 - видимо последняя строка одной из обрабатываемых ранее таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2014, 14:11 |
|
помогите совместить таблицы без декартова умножения!
|
|||
---|---|---|---|
#18+
как вариант самому проставить ROW_NUMBER() на фоксе так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
также делаем t2 далее работаем с курсорами t1 и t2 Код: sql 1.
Только не уверен что VFPOLEDB это поймет, попробуй ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2014, 14:22 |
|
помогите совместить таблицы без декартова умножения!
|
|||
---|---|---|---|
#18+
Dima T, спасибо, сейчас попробую! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2014, 14:23 |
|
помогите совместить таблицы без декартова умножения!
|
|||
---|---|---|---|
#18+
Нася85, ну, наверное, можно и так: Код: sql 1. 2. 3. 4. 5. 6.
И то должна быть гарантия, что нет повторения сочетания дата документа+сумма документа.... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2014, 14:42 |
|
|
start [/forum/topic.php?fid=41&fpage=32&tid=1582677]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 340ms |
total: | 469ms |
0 / 0 |