Форум: "Базы";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];
Внизмножество в условии Найти похожие ветки
← →
belmol (2009-07-17 09:14) [0]Доброго времени суток мастерам, вероятно тема поднималась но что то я не могу найти. Есть 2 таблицы мне ндо из одной выбрать строки в которых столбец содержит любое из значений столбца другой таблицы. в случае сравнения мне все понятно
select * from main where stat1 in (select stat_ from stattable where id2=3)
а если мне надо не "равенство", а "содержит" ?? не могу понять как сделать((
← →
belmol (2009-07-17 09:41) [1]неужели join-ом ?
← →
Вариант (2009-07-17 09:46) [2]
> belmol (17.07.09 09:14)
> belmol (17.07.09 09:41) [1]
Вопрос твой мне например не понятен. Можно и IN, можно и LIKE, можно и JOIN. Даже для одних условий задачи можно несколько вариантов. Условия твоей задачи не ясны.
← →
belmol (2009-07-17 09:52) [3]услолвие такое:
таблица main
ld (уникально) | name | fam | stat1 (char 500) |
таблица stattable
id | stat_ (char 10) | id2 (int)
надо из таблицы main выбрать все строки stat1 которых содержит (select stat_ from stattable where id2=2) и желательно без join
← →
belmol (2009-07-17 09:54) [4](select stat_ from stattable where id2=2) получается array of char
← →
Вариант (2009-07-17 10:21) [5]
> belmol (17.07.09 09:52) [3]
> belmol (17.07.09 09:54) [4]
Полное соотвествие (main.stat1 = stattable.stat_ + stattable.id2=2 )?
Если так, то можно и без JOIN, что в общем все равно дает внутреннее объединение
select main.* from main,stattable where stattable.id2=2 and main.stat1 = stattable.stat_
Если не так, тогда я все равно не понял вопрос или не учел специфику IB, давно уже с ним не работал. Тогда лучше набросал бы тройку записей одной таблицы, другой таблицы и показыл бы результат запроса в виде третье таблицы.
← →
belmol (2009-07-17 10:33) [6]таблица main
ld (уникально) | name | fam | stat1 (char 500) |
1 вася ... 105/2 111/2 228/2
2 петя ... 112/2 163/1 158/3
3 кузя ... 162/2 161/1
4 ваня ... 159/4
5 ... ... ........
таблица stattable
id | stat_ (char 10) | id2 (int)
1 132/2 3
2 105/2 2
3 159/4 2
4 163/2 1
при id2 = 2
итог
ld (уникально) | name | fam | stat1 (char 500) |
1 вася ... 105/2 111/2 228/2
4 ваня ... 159/4
← →
Вариант (2009-07-17 10:58) [7]
> belmol (17.07.09 10:33) [6]
Понятно, найти подстроку в строке. Пощи про поиск подстрок в IB - функций IB я не помню, слишком давно с ним работал
← →
belmol (2009-07-17 11:17) [8]так вот искал.. нету ничего подобного(( с 1 подсрокой да а с множеством.. нету ничего..
← →
Вариант (2009-07-17 12:00) [9]
> belmol (17.07.09 11:17) [8]
Должно быть, даже если нет, то остается еще вариант с UDF
← →
belmol (2009-07-17 12:07) [10]народ, не уж то нет простого решения?
← →
Вариант (2009-07-17 12:13) [11]
> http://www.ibase.ru/devinfo/charvar.htm
Там пишут об операторах поиска по строкам. Кстати там же можешь и вопрос задать на www.ibase.ru и поскать
← →
belmol (2009-07-17 12:23) [12]>Вариант (17.07.09 12:13) [11]
спасибо, но вджруг еще кто то что то знает
← →
Petr V. Abramov © (2009-07-17 12:35) [13]
> belmol (17.07.09 09:41) [1]
> неужели join-ом ?
in (select stat_ from stattable where id2=3) преобразовывается в join, так что не бойся
← →
Кщд (2009-07-17 13:45) [14]
> Вариант (17.07.09 12:00) [9]
> Должно быть, даже если нет, то остается еще вариант с UDF
select m.*
from main m
join statable st
on m.stat1 like "%" || st.stat_ || "%"
and st.id2 = 2
← →
belmol (2009-07-17 14:59) [15]проблемма в том чт у меня запрос наборный.. и дофига переделывать если использовать join, с join то я знаю как )) переписывать большой кусок.. т.к. таблица main имеет 50 столбцов и набор запроса происходит в зависимости от выбранных критериев..
← →
Кщд (2009-07-17 15:10) [16]>belmol (17.07.09 14:59) [15]
проблема в том, чтобы описать задачу полно, предоставить исходные данные в удобном виде и использовать теги при оформлении сообщения
← →
Mike Kouzmine (2009-07-20 23:06) [17]не равенство, содержит... Like?
← →
Petr V. Abramov © (2009-07-21 05:32) [18]
> таблица main имеет 50 столбцов и набор запроса происходит
> в зависимости от выбранных критериев..
А если 51 столбец станет? не 50!, а 51! строк условий? :)
может, переписать, пока не поздно? базе-то пофиг.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2010.11.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.003 c