MapBasic cвязка нескольких таблиц
-
- Участник
- Сообщения: 78
- Зарегистрирован: 05 апр 2014, 17:13
- Репутация: 5
MapBasic cвязка нескольких таблиц
У меня задача написать на MapBasic программку, решающую следующую задачу.
Есть таблицы без графических объектов q1, q2, q3, q4 в каждой из которых имеется по две колонки (kod, name)
Есть таблица q в которой колонки (kodq1, nameq1, kodq2, nameq2, kodq3, nameq3, kodq4, nameq4)
Необходимо занести значения в таблицу q из колонок kod и name таблицы q1 в колонки kodq1 и nameq1, из колонок kod и name таблицы q2 в колонки kodq2 и nameq2,из колонок kod и name таблицы q3 в колонки kodq3 и nameq3,из колонок kod и name таблицы q4 в колонки kodq4 и nameq4. Таким образом чтобы все значения находились рядом, т.е. количество строк таблицы q должно равняться количеству строк самой большой таблицы (q1, q2, q3 или q4), а не сумме строк этих таблиц.
Подскажите как это можно сделать
Есть таблицы без графических объектов q1, q2, q3, q4 в каждой из которых имеется по две колонки (kod, name)
Есть таблица q в которой колонки (kodq1, nameq1, kodq2, nameq2, kodq3, nameq3, kodq4, nameq4)
Необходимо занести значения в таблицу q из колонок kod и name таблицы q1 в колонки kodq1 и nameq1, из колонок kod и name таблицы q2 в колонки kodq2 и nameq2,из колонок kod и name таблицы q3 в колонки kodq3 и nameq3,из колонок kod и name таблицы q4 в колонки kodq4 и nameq4. Таким образом чтобы все значения находились рядом, т.е. количество строк таблицы q должно равняться количеству строк самой большой таблицы (q1, q2, q3 или q4), а не сумме строк этих таблиц.
Подскажите как это можно сделать
Последний раз редактировалось Dartix 18 мар 2015, 21:20, всего редактировалось 1 раз.
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: MapBasic cвязка нескольких таблиц
1. Добавить записи самой большой таблицы в q с помещением содержимого в соответствующие колонки.
2. Ей и трём оставшимся добавить целочисленные колонки num и через "обновить таблицу" заполнить их выражением rowid.
3. Через "обновить таблицу" заполнить колонки q соответствующим содержимым трёх таблиц с объединением по колонкам num.
Почему-то мапинфо не объединяет сразу по rowid, поэтому нужно её значения сперва записать в " обычную" колонку.
2. Ей и трём оставшимся добавить целочисленные колонки num и через "обновить таблицу" заполнить их выражением rowid.
3. Через "обновить таблицу" заполнить колонки q соответствующим содержимым трёх таблиц с объединением по колонкам num.
Почему-то мапинфо не объединяет сразу по rowid, поэтому нужно её значения сперва записать в " обычную" колонку.
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: MapBasic cвязка нескольких таблиц
Я вот только после ответа заинтересовался - а что мелкие таблицы никак между собой не связаны?
Я все равно спрошу перед ответом - а какой смысл в такой таблице?
А теперь собственно ответ: в заголовке указан MapBasic, если речь идет о языке программирования, то видимо, такое заполнение делается стандартными командами:
1) мелкие таблицы перебираются через FETCH;
2) а данные в большую таблицу вносятся стандартным INSERT с 8-ь значениями - по 2 от каждой таблицы.
Структуру большой таблицы проще создать заранее, но можно и ее создать через MB.
Я все равно спрошу перед ответом - а какой смысл в такой таблице?
А теперь собственно ответ: в заголовке указан MapBasic, если речь идет о языке программирования, то видимо, такое заполнение делается стандартными командами:
1) мелкие таблицы перебираются через FETCH;
2) а данные в большую таблицу вносятся стандартным INSERT с 8-ь значениями - по 2 от каждой таблицы.
Структуру большой таблицы проще создать заранее, но можно и ее создать через MB.
-
- Участник
- Сообщения: 78
- Зарегистрирован: 05 апр 2014, 17:13
- Репутация: 5
Re: MapBasic cвязка нескольких таблиц
Смысл таблиц и маленьких и составной прост - это справочники для другой MB программы, они все уже созданы и имеют определенную структуру.
Мне нужно сначала определить какая из таблиц самая большая, чтобы добавлять её через "добавить запись". Как это сделать в MB? Таблиц огромное множеств и составных и маленьких.
Boris, >а данные в большую таблицу вносятся стандартным INSERT с 8-ь значениями - по 2 от каждой таблицы.
Так INSERT будет добавлять записи от каждой таблицы?!?
ginpetr, Спасибо
Мне нужно сначала определить какая из таблиц самая большая, чтобы добавлять её через "добавить запись". Как это сделать в MB? Таблиц огромное множеств и составных и маленьких.
Boris, >а данные в большую таблицу вносятся стандартным INSERT с 8-ь значениями - по 2 от каждой таблицы.
Так INSERT будет добавлять записи от каждой таблицы?!?
ginpetr, Спасибо
- ginpetr
- Завсегдатай
- Сообщения: 385
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
- Контактная информация:
Re: MapBasic cвязка нескольких таблиц
Найти самую большую таблицу можно перебором в цикле номеров таблиц с 1 до numtables() - могу ошибаться с написанием. Количество строк tabeleinfo(tablename,8).
Если на мапбейсике, то, действительно, придется через цикл и insert.
Уж не классификатор для территориального планирования делаете, случайно? А то у меня есть готовые таблицы...
Если на мапбейсике, то, действительно, придется через цикл и insert.
Уж не классификатор для территориального планирования делаете, случайно? А то у меня есть готовые таблицы...
-
- Активный участник
- Сообщения: 232
- Зарегистрирован: 10 мар 2012, 07:59
- Репутация: 4
- Откуда: Новосибирск
Re: MapBasic cвязка нескольких таблиц
Классификатор для территориального планирования... уж не по 19 -му ли приказу?
-
- Участник
- Сообщения: 78
- Зарегистрирован: 05 апр 2014, 17:13
- Репутация: 5
Re: MapBasic cвязка нескольких таблиц
Спасибо, всё получилось.
Нет делаю программу для лесной сферы)
Нет делаю программу для лесной сферы)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя