|
Как лучше?
|
|||
---|---|---|---|
#18+
Добрый день. Есть большой список значений полей хранящийся в файле. Необходимо осуществить поиск в большой БД совпадений из этого списка. Если удастся найти, то необходимо сделать пометку в найденной записи. Как оптимальней сделать, sql (update по select) запрос для каждого значения из списка или же доставать каждую запись (программно) и сравнивать со списком ? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 13:23 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
загнать список в таблицу БД, далее средствами SQL сравнивать/апдейтить. Вопрос-то в чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 13:29 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Загонять ничего в БД нельзя. Вопрос в том, как оптимальнее сделать, делать для каждого значения из списка SQL запрос или перебирать все записи (программно на сях например) и каждую запись сравнивать со списком и если найдётся делать пометку ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 13:35 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
AbrazivКак оптимальней сделать Это зависит от величины списков, доступных ресурсов (ОЗУ) и кривизны рук программиста. Судя по остальным твоим топикам - тебе лучше последовать совету Ивана. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 13:35 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Модератор: Полегче на поворотах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 13:42 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Два списка можно столкнуть средствами SQL, в этом языке все для этого есть. Можно столкнуть на любом языке программирования, было бы желание. В случае SQL это как крупнопанельное домостроительство, Си в данном контексте как куча песка, куча цемента и мастерок. AbrazivЗагонять ничего в БД нельзя.Всегда можно загнать в третью БД на третьем хосте, вопрос опять таки в желании. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 14:15 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
AbrazivЗагонять ничего в БД нельзя. Что мешает? Религия?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 14:28 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Понял, всем спасибо. Попробую создать дополнительную таблицу, загнать туда и делать на запросах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.07.2017, 14:54 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Походу дела столкнулся с проблемой. Имеется две таблицы, t1 и t2, нужно обновить поле f1 в таблице t1 значением f1 таблицы t2, если выполняется условие t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4, не получается это сделать из-за ограниченности возможностей SQL interbase. Есть идеи? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:33 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Можно пробежаться по всем строкам и case-ом выбирать значение из той или иной таблицы. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:42 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Abraziv, напомни, какая у тебя версия. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:43 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Abraziv, если я правильно понял то тебе поможет MERGE ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:44 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
wadman Можно пробежаться по всем строкам и case-ом выбирать значение из той или иной таблицы. Хочется сделать средствами SQL. WildSery напомни, какая у тебя версия. 2009 Симонов Денис если я правильно понял то тебе поможет MERGE Понял, спасибо попробую глянуть в этом направлении. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:51 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
AbrazivХочется сделать средствами SQL. А, ну да... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:51 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Abraziv, не глянешь. Нет в IB оператора MERGE ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 11:54 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
AbrazivПоходу дела столкнулся с проблемой. Имеется две таблицы, t1 и t2, нужно обновить поле f1 в таблице t1 значением f1 таблицы t2, если выполняется условие t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4, не получается это сделать из-за ограниченности возможностей SQL interbase. Есть идеи? а что такое не прокатит Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:30 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
m7m (select t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) SELECT может вернуть несколько записей в таком случае. Это тоже необходимо учесть. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:33 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
т.е. set t1.f1= (несколько записей) не прокатывает, я тоже так пробовал и на этом остановился. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:38 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Abrazivm7m (select t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) SELECT может вернуть несколько записей в таком случае. Это тоже необходимо учесть. 1. в том что я написал не может 2. ну как только откроешь секрет, что при этом надо делать, то может быть, кто-то что-то и напишет ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:38 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
В случает если select t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4 возвращает несколько значений, необходимо сделать пометку во всех соответствующих записях в поле f1 таблицы t1 соответствуюшим полем f2 таблицы t1. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:46 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Abraziv, Что такое "пометка"? До этого была версия, что туда t2.f1 (какого типа?) нужно запихать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:53 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
AbrazivВ случает если select t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4 возвращает несколько значений, необходимо сделать пометку во всех соответствующих записях в поле f1 таблицы t1. Код: sql 1. 2. 3. 4. 5. 6. 7.
или может быть вот так, Код: sql 1. 2. 3. 4. 5. 6. 7.
ну а может быть еще как-то ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:54 |
|
Как лучше?
|
|||
---|---|---|---|
#18+
Да t2.f1, необходимо запихать. Пометка это значение t2.f1, извиняюсь если сбил с толку. m7mupdate t1 set t1.f1=(select t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) where singular(select t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) update t1 set t1.f1=Здесь_Наша_Пометка where (select count(*) from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) > 2 или может быть вот так, update t1 set t1.f1=(select distinct t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) where singular(select distinct t1.f2 from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) update t1 set t1.f1=Здесь_Наша_Пометка where (select count(distinct t1.f2) from t2 where ... t1.f2 = t2.f2 OR t1.f3 = t2.f3 OR t1.f4 = t2.f4) > 2 ну а может быть еще как-то Спасибо попробую, правда мне кажется будут пропуски. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.07.2017, 12:59 |
|
|
start [/forum/topic.php?fid=40&fpage=43&tid=1561493]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 159ms |
0 / 0 |