Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Johnnie88
Зарегистрирован: 08.10.2010 Сообщения: 6
|
Добавлено: Пн Дек 20, 2010 4:57 pm Заголовок сообщения: Селект по массиву констант, заранее неизвестной размерности |
|
|
Здравствуйте! При изучении среды программирования MapBasic столкнулся с такой проблемой:
Допустим нам надо выделить записи из таблицы TABLE1, в которых в колонке COL1 встречаются константы из массива M() размерностью 3. В этом случае строка запоса задается легко:
Select * from TABLE1 where COL1 = any (M(1), M(2), M(3)) into Selection
Но, что будет со строкой запроса, если размерность массива заранее неизвестна и зависит от предыдущих запросов?
Или что будет, если размерность массива констант равна не 3, а, например 10000? Неужели придётся прописывать строку запроса так:
Select * from TABLE1 where COL1 = any (M(1), M(2),..., M(10000)) into Selection
Хотелось бы узнать, есть ли в MB возможность прописать строку запроса для поиска записей, просто указав название массива?
Или, если такой возможности нет, то существует ли в MB функция (наподобии UNION в SQL) которая объединяет несколько запросов в одну выборку (что бы прогнать этот массив в цикле и получить нужную выборку)? |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пн Дек 20, 2010 10:18 pm Заголовок сообщения: |
|
|
Поместите ваш массив во вторую таблицу и произведите обычную реляционную операцию пересечения множеств.
Внимательнее изучите синтаксис SELECT в MapBasic, там это есть. |
|
Вернуться к началу |
|
|
Johnnie88
Зарегистрирован: 08.10.2010 Сообщения: 6
|
Добавлено: Вт Дек 21, 2010 8:29 am Заголовок сообщения: |
|
|
Т.е. имеется ввиду создать таблицу, например, TABLE2, идентичную по структуре TABLE1. И в COL1 таблицы TABLE2 записать значения массива. Соответственно Селект будет выглядеть следующим образом:
Select * from TABLE1, TABLE2 where TABLE2.COL1 = TABLE1.COL1 into Selection
Я правильно Вас понял?) |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Вт Дек 21, 2010 7:27 pm Заголовок сообщения: |
|
|
Ну не обязательно идентичную по структуре. У таблиц достаточно совпадения ключевых полей (из которых состоит ключ).
А в целом, да, правильно. |
|
Вернуться к началу |
|
|
Johnnie88
Зарегистрирован: 08.10.2010 Сообщения: 6
|
Добавлено: Чт Дек 23, 2010 2:33 pm Заголовок сообщения: |
|
|
У меня не получалось делать такие запросы по 2ум таблицам, разным по структуре. Выдавало какую-то ошибку...
Но всё равно спасибо! Проблема решена способом, описанным в третьем посте) |
|
Вернуться к началу |
|
|
FedorinoFF
Зарегистрирован: 01.02.2007 Сообщения: 272 Откуда: Санкт-Петербург
|
Добавлено: Ср Дек 29, 2010 10:21 am Заголовок сообщения: |
|
|
ну а если так
Select * from TABLE1 where TABLE1.COL1 in (select TABLE2.COL1 from TABLE2) into Selection |
|
Вернуться к началу |
|
|
|