powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вернуть только не существующие записи
9 сообщений из 34, страница 2 из 2
Вернуть только не существующие записи
    #38353297
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В том и дело что описанная задача НЕ подразумевает иерархических связей, структура таблиц одинаковая, стало быть все кроме INSERT'а можно делать синхронно хоть с 888 таблями.
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353305
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
debloggerВ том и дело что описанная задача НЕ подразумевает иерархических связей, структура таблиц одинаковая, стало быть все кроме INSERT'а можно делать синхронно хоть с 888 таблями.Судя по докам - да... Хотя механизм сего чуда ... непонятен... :) Равно как и блокировки таблиц...

Надо будет почитать на досуге...
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353309
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы лучше подскажите как не создавая колонки отметить поля. В башке крутится не могу сообразить. Должно быть через индексы. Типа выкосить все и добавить только тем, которые совпадают.
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353320
deblogger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007Судя по докам - да... Хотя механизм сего чуда ... непонятен... :) Равно как и блокировки таблиц...


Как я и предполагал тут стаж сурового такого, челябинского программирования.

Нет никакого чуда. Странно почему одновременный инсерт недопустим. Видимо какое-то железное ограничение, типа какой тогда id возвращать.

На практике, конечно, все это редко используется, поскольку обновлять иерархию из плоского отчета в принципе можно, но геморройно и логически несовместимо с иерархией.

Однако это вовсе не значит что вам нельзя соединить абсолютно любым таблицы таким простым способом

SELECT tab1, tab3 WHERE 1

Ни разу не пробовали?

Кроме того, это полная квалификация идентификаторов. Я специально сделал такие таблицы для примера с индивидуальными названиями полей. Чтобы не трахаться с выбором их в SELECT. Но если надо то пишем по схеме: база.таблица.поле Каждое поле таким образом идентифицируется однозначно и почему это чудо я не понял.
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353324
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня фигня какая-то получается:)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table MyTable(val varchar(100));
insert MyTable values 
  ('abb'),('abc'),('ac'),('b');

set @str='a,ab,abc,b,ac';

select @str:=replace(concat(',',@str,','),concat(',',t.val,','),',')
from MyTable t
where FIND_IN_SET(t.val,@str)>0;

select @str;


Но в конце получается ',,,a,ab,,,' , да и индекс не пристегивается - полным перебором получается:(
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353341
feddd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007feddd, задача-то решена или еще нет:)?
Как хотелось решить - нет, не решена. Вариант с множеством union некрасив и в данном случае бессмысленный.
Решено в лоб, извлекаю селектом все записи из таблицы в программе, помещаю все данные в хеш(т.к. дублироваться они не могут) и проверяю имеющийся записи на наличия такого ключа в хеше.
Красивого решения в виде у меня нету: дать в БД список -> получить значения, которых нету в определённой таблице.
На первый взгляд довольно тривиальная задача, удивлён, что так и не удалось найти красивого решения.
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353344
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
впрочем, все поправимо (пока - кроме индекса)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
set @str='a,ab,abc,b,ac';
set @str=concat(',',@str,',');

select @str:=replace(@str,concat(',',t.val,','),',')
from MyTable t
where FIND_IN_SET(t.val,@str)>0;

select substr(@str,2,length(@str)-2);
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353531
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007впрочем, все поправимо (пока - кроме индекса)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
set @str='a,ab,abc,b,ac';
set @str=concat(',',@str,',');

select @str:=replace(@str,concat(',',t.val,','),',')
from MyTable t
where FIND_IN_SET(t.val,@str)>0;

select substr(@str,2,length(@str)-2);



В суть топика -- не вникал, но межет
вот такая мулька вам поможет:

http://www.sql.ru/forum/740218/zapros-vypolnyaetsya-25-sek?mid=8434456#8434456
...
Рейтинг: 0 / 0
Вернуть только не существующие записи
    #38353562
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbc,

В общем-то как раз и думал о подобном, только с нумерацией через переменные (типа: select @n:=@n+1, * from table1,(select @n:=0)n order by ...) и соединением сформированной динамически таблички с основной.

Но - если у таблицы нет нужного индекса, или если решение ТСа не устраивает, - то и напрягаться не стоит
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вернуть только не существующие записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]