MapBasic cвязка нескольких таблиц

MapInfo, MapBasic
Ответить
Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

MapBasic cвязка нескольких таблиц

Сообщение Dartix » 13 мар 2015, 09:28

У меня задача написать на 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), а не сумме строк этих таблиц.
Подскажите как это можно сделать
Последний раз редактировалось Dartix 18 мар 2015, 21:20, всего редактировалось 1 раз.

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: MapBasic cвязка нескольких таблиц

Сообщение ginpetr » 13 мар 2015, 18:59

1. Добавить записи самой большой таблицы в q с помещением содержимого в соответствующие колонки.
2. Ей и трём оставшимся добавить целочисленные колонки num и через "обновить таблицу" заполнить их выражением rowid.
3. Через "обновить таблицу" заполнить колонки q соответствующим содержимым трёх таблиц с объединением по колонкам num.

Почему-то мапинфо не объединяет сразу по rowid, поэтому нужно её значения сперва записать в " обычную" колонку.

Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: MapBasic cвязка нескольких таблиц

Сообщение Boris » 14 мар 2015, 02:34

Я вот только после ответа заинтересовался - а что мелкие таблицы никак между собой не связаны?
Я все равно спрошу перед ответом - а какой смысл в такой таблице?
А теперь собственно ответ: в заголовке указан MapBasic, если речь идет о языке программирования, то видимо, такое заполнение делается стандартными командами:
1) мелкие таблицы перебираются через FETCH;
2) а данные в большую таблицу вносятся стандартным INSERT с 8-ь значениями - по 2 от каждой таблицы.
Структуру большой таблицы проще создать заранее, но можно и ее создать через MB.

Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

Re: MapBasic cвязка нескольких таблиц

Сообщение Dartix » 15 мар 2015, 08:13

Смысл таблиц и маленьких и составной прост - это справочники для другой MB программы, они все уже созданы и имеют определенную структуру.
Мне нужно сначала определить какая из таблиц самая большая, чтобы добавлять её через "добавить запись". Как это сделать в MB? Таблиц огромное множеств и составных и маленьких.
Boris, >а данные в большую таблицу вносятся стандартным INSERT с 8-ь значениями - по 2 от каждой таблицы.
Так INSERT будет добавлять записи от каждой таблицы?!?
ginpetr, Спасибо

Аватара пользователя
ginpetr
Завсегдатай
Сообщения: 385
Зарегистрирован: 21 июн 2011, 12:07
Репутация: 140
Откуда: Орск
Контактная информация:

Re: MapBasic cвязка нескольких таблиц

Сообщение ginpetr » 15 мар 2015, 12:28

Найти самую большую таблицу можно перебором в цикле номеров таблиц с 1 до numtables() - могу ошибаться с написанием. Количество строк tabeleinfo(tablename,8).
Если на мапбейсике, то, действительно, придется через цикл и insert.
Уж не классификатор для территориального планирования делаете, случайно? А то у меня есть готовые таблицы...

nikomuro
Активный участник
Сообщения: 232
Зарегистрирован: 10 мар 2012, 07:59
Репутация: 4
Откуда: Новосибирск

Re: MapBasic cвязка нескольких таблиц

Сообщение nikomuro » 15 мар 2015, 13:05

Классификатор для территориального планирования... уж не по 19 -му ли приказу?

Dartix
Участник
Сообщения: 78
Зарегистрирован: 05 апр 2014, 17:13
Репутация: 5

Re: MapBasic cвязка нескольких таблиц

Сообщение Dartix » 18 мар 2015, 21:19

Спасибо, всё получилось.
Нет делаю программу для лесной сферы)

Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 12 гостей