|
|
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Народ помогите плиз запарился ваще мозги враскарячку... :-((( Такая проблема: есть 3 курсора. в каждом из них 2 поля, в 1 курсоре одна запись, во втором и третьем - нет записей. КАК ИХ ОБЪЕДИНИТЬ В ОДИН КУРСОР НА 6 ПОЛЕЙ (В ПОЛЯХ ОТ ВТОРОГО И ТРЕТЬЕГО КУРСОРА ДОЛЖНЫ СТОЯТЬ НУЛИ)? делаю SELECT * FROM Q1,Q2,Q3 INTO CURSOR QQQ - он получаецца пустой, т.е. изза того, что во 2-м и 3-м курсорах нет записей вообще, теряецца запись и из 1-го. заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 17:20 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 18:04 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
А зачем тебе 2 и 3 курсор нужен, раз там нет никаких записей? Тебе же надо просто добавить пустые поля в первый курсор. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Несколько нулей нужны, чтобы задать определенную размерность. Если версия VFP9, то можно использовать функцию CAST() для явного указания размерности. Можно еще пойти другим путем: создать пустой курсор нужной размерности и перелить в него данные первого курсора Код: plaintext 1. 2. Разумеется, имена полей в результирующем курсоре должны совпадать с именами полей в первом курсоре. Из тех, в которые надо будет добавлять данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 18:57 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Как вариант, можно еще так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Смысл в том, что если в директиве SELECT есть ссылка на поля таблицы, которая не указана в директиве FROM, то такие поля воспринимаются просто как некие выражения (функции), которые надо вычислить при заполнении каждой строки результирующей выборки. Т.е. взять из текущей записи соответсвующей рабочей области. А поскольку в текущей записи эти поля имеют нулевое значение, то и будет взято 0. Правда, поскольку это все-таки выражение, то его размерность не будет совпадать с размерностью соответствующих таблиц. В данном случае будет несколько больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2007, 21:14 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
Хорошо. А если те же 3 курсора, но неизвестно, какой из них пустой - как быть в этом случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 10:14 |
|
||
|
Объединение таблиц
|
|||
|---|---|---|---|
|
#18+
VINNI5898Хорошо. А если те же 3 курсора, но неизвестно, какой из них пустой - как быть в этом случае? Если вариант - один заполнен, а 2 пустых, то примерно также: 1) Через CREATE CURSOR создаешь курсор нужной структуры и 3 последовательных APPEND FROM из каждого курсора Код: plaintext 1. 2. 3. 4. Правда, в этом случае желательно, чтобы имена полей в курсорах отличались, поскольку APPEND FROM делает добавление по именам полей. 2) То же, что предложил alex11100 , но слегка изменив запрос Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 3) Сначала определить в каком курсоре есть запись, а затем использовать макроподстановки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2007, 10:36 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34250833&tid=1590046]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 509ms |

| 0 / 0 |
