0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 23
1

INSERT разными способами

26.09.2015, 20:24. Показов 404. Ответов 4
Метки нет (Все метки)

Добрый вечер! Помогите решить ещё одну задачку. В ней сразу несколько проблем.
есть таблица 1, в ней колонки: продукт, номер накладной и другие. В этой таблице все эти значения могут повторяться (и продукты и номера накадных), но не их пары. Номера накладных хранятся в таблице 2. То есть там они все, а в таблице 1 какого-то может не быть.
Нужно: найти и вставить строки из таблицы 1 с минимальным номером накладной из таблицы 2 в таблицу же 1, только при вставке вместо номера накладной из поиска чтобы там был максимальный номер накладной из таблицы 2. Загвозка в том как скомбинировать синтаксис INSERT ... SELECT с INSERT ... VALUE для всех столбцов кроме того, что надо задать явно максимальным значением таблицы 2.
И вторая проблема. Надо не просто вставить строки, а есть дополнительное условие, что если в таблице 1 уже существуют строки для максимального значения накладной, то продукты, найденные селектом и совпадающие с этими строками вставлять не надо.
Сложно это все представить, даже описывать сложно. Помогите...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2015, 20:24
Ответы с готовыми решениями:

Выборка 5 строк разными способами
Доброго времени суток. Есть запрос Dim fiveada = db.Adverts.Include(Function(n)...

Сохранение информации разными способами
Здравствуйте! Недавно начал разбираться с изображениями. И у меня возник вопрос : Насколько...

Решение СЛАУ разными способами
Нужно решить систему линейных уравнений следующими способами: а) матричным способом и используя...

Интегрирование функции разными способами
Дали задание в университете, мол, реализуйте интегрирование функции вида f(x) методами...

4
12 / 12 / 1
Регистрация: 22.02.2015
Сообщений: 44
27.09.2015, 00:21 2
А можно пример данных и структуру(только ту часть, которая используется для данной задачи)?
0
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 23
27.09.2015, 10:01  [ТС] 3
Структура такова:
таблица 1:
Продукт - внешний ключ к таблице, которая сейчас не интересует
Номер накладной - внешний ключ к таблице 2
Другие поля (кол-во, цена)

таблица 2:
Номер документа - первичный ключ
Другие поля - характеристики документа

Пример данных:
таблица 2 - хранилище номеров накладных, их типов и др. хар-к

Док-т 303 - хар-ка
Док-т 304 - хар-ка
Док-т 305 - хар-ка
Док-т 306 - хар-ка

таблица 1 - строки документов из таблицы 2:

Молоко, док-т 303
Пиво, док-т 303
Молоко, док-т 304
Сухари, док-т 305
Пиво, док-т 305

Нужно чтоб в таблице 2 был найден минимальный документ (303) и строки (из таблицы 1), соответствующие ему были вставлены в эту же таблицу но под максимальным номером (306).
Также должно учитываться, что в таблице1 уже могли быть некоторые строки этого максимального документа. Нужно вставить только те строки из минимального, которые не являются таким же товаром. Т.е допустим нет 306 номера, последний 305, но там уже имеется 2 записи, одна из которых "Пиво" такая же как и у 303. Строчку с пивом копировать в 305 наново не нужно, только молоко.
0
12 / 12 / 1
Регистрация: 22.02.2015
Сообщений: 44
27.09.2015, 23:38 4
Минимальный и максимальный документ - это два документа: 303 и 306. Нужно только их "обработать"?
Или 303 в 306, 304 в 305?
Вы хотите это все через SQL запрос сделать или через скрипт(не важно на каком языке)+SQL?
0
0 / 0 / 0
Регистрация: 26.09.2015
Сообщений: 23
28.09.2015, 09:09  [ТС] 5
Нет, только из 303 в 306 в данном примере, т.к. они минимальный и максимальный. Решила задачу, если кому интересно, может, кривовато, но работает:
MySQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
INSERT INTO табл1
SELECT продукт, все остальные колонки, max(dmz.NDM)
FROM табл1
JOIN табл2
WHERE продукт NOT IN 
(
SELECT продукт
from табл1
JOIN табл2
GROUP BY продукт, табл1.номер накладной
HAVING табл1.номер накладной = max(табл2.номер накладной)
)
GROUP BY продукт, все остальные колонки, табл1.номер накладной
HAVING
табл1.номер накладной = min(табл2.номер накладной)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.09.2015, 09:09

Сортировка массивов разными способами
1.Реализовать алгоритм сортировки прямым включением в виде функции 2.Реализовать алгоритм...

Сортировка массивов разными способами
У меня завтра зачёт с энономической информатики. И мне нужно запрограмировать следующие методы...

Определенные интегралы разными способами
Столкнулся с трудностью применения функций quad и quad8. Задание обстоит так: Найдите...

Возврат значения разными способами
Помогите, пожалуйста! Дано действительное x. Код: import java.io.BufferedReader; import...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru