Здравствуйте, RAPTORGrrr, Вы писали:
RAP>Добрый день!
RAP>Есть 2 таблицы в (в примере СТ и СО RAP>В СТ id товара и наименование. RAP>В СО счетчик и код товара (CT.id) RAP>А СЕ это диапазон из Excel.
RAP>
RAP>Пример
RAP>CE CT CO
RAP>name id name id num
RAP>Товар1 1 Товар1 1 1
RAP>Товар2 2 Товар2 2 2
RAP>Товар5 3 Товар5 3 3
RAP>Товар8 4 Товар8 4 4
RAP>Товар8 5 4
RAP>Товар1
RAP>
RAP>Цель найти отличия (т.е каких записей не хватает) в таблице СО по сравнению с CE RAP>В результате в CO должна будет добавиться запись 1.
D>>А в CT нужно записи повторяющиеся добавлять?
RAP>В СТ добавлять ничего не нужно. По нему определяетья связь id и наименование, поскольку в СЕ только наименование, а в СО только id
А если появится дубликат в CE, то как ты добавишь запись в CO со счетчиком 1, если там уже будет запись с таким же id?
Какая СУБД кстати? А то запросы посложнее отличаются синтаксисом на различных СУБД
Re[4]: Запрос на обновление
От:
Аноним
Дата:
29.08.08 08:27
Оценка:
D>А если появится дубликат в CE, то как ты добавишь запись в CO со счетчиком 1, если там уже будет запись с таким же id? D>Какая СУБД кстати? А то запросы посложнее отличаются синтаксисом на различных СУБД
danclax
Уточню задачу (прежде абстрагировался с товарами, etc)
В таблице СТ — справочник должностей
id — код должности
name — наименование должности
Пример 1
id name
1 Начальник
2 Директор
3 Уборщица
В таблице СО — штатные должности с подразделением
id — счетник
num — код должности
lev — код подразделения
Пример 2
id num lev
1 1 1
2 2 2
3 2 3
4 3 2
Таблица СЕ — береться из листа Excel, указан штатный состав,
причем записи повторяються.
Пример 3
Должность Подразделение
Уборщица 2
Уборщица 2
Начальник 2
Начальник 2
В результате нужно добавить в подразделение 2
1 начальника и 1 уборщицу, а таблица СO станет такой
id num lev
1 1 1
2 1 2
3 2 3
4 3 2
5 3 2
6 1 2
База: старый Informix, я использовал только SQL-92, конструкцию вида:
select ce. должность
from ce
where ce. должность not in
(select ... )
Соседний пост писал я.
Забыл добавить: в результате запроса выдаються должности которых вообще нет в со, а мне нужно что бы все даже с одинаковым названием.
Здравствуйте, Аноним, Вы писали:
А>Есть какие-нибудь предложения?
Понятно, что получить. Но решения я не вижу... Остается писать SP посложнее, одним запросом не обойтись...
Re: Запрос на обновление
От:
Аноним
Дата:
30.08.08 14:35
Оценка:
Здравствуйте, RAPTORGrrr, Вы писали:
RAP>Добрый день!
RAP>Есть 2 таблицы в (в примере СТ и СО RAP>В СТ id товара и наименование. RAP>В СО счетчик и код товара (CT.id) RAP>А СЕ это диапазон из Excel.
RAP>
RAP>Пример
RAP>CE CT CO
RAP>name id name id num
RAP>Товар1 1 Товар1 1 1
RAP>Товар2 2 Товар2 2 2
RAP>Товар5 3 Товар5 3 3
RAP>Товар8 4 Товар8 4 4
RAP>Товар8 5 4
RAP>Товар1
RAP>
RAP>Цель найти отличия (т.е каких записей не хватает) в таблице СО по сравнению с CE RAP>В результате в CO должна будет добавиться запись 1.
RAP>Используя подзапрос c with not in. нахожу разницу но выдает только уникальные записи, а мне нужны все повторы.
RAP>Как можно решить такую задачу? RAP>Может что нужно поправить в таблицах, что бы запрос был выполнен?
SELECT query_2.[Name]
FROM (SELECT CO.[CT_id], COUNT(CO.[CT_id]) AS CT_ID_COUNT
FROM CO
GROUP BY CO.[CT_id]) AS query_1
INNER JOIN
(SELECT CT.[Id], CT.[Name], COUNT(CE.[Name]) AS CE_COUNT
FROM [CE]
INNER JOIN [CT] ON CT.[Name] = CE.[Name]
GROUP BY CT.[Id], CT.[Name]) AS query_2 ON query_1.[CT_id] = query_2.Id AND query_1.CT_ID_COUNT <> query_2.CE_COUNT;