| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > Обновление записей исключая не полностью выбранных |
| Автор: SotGE 11.6.2013, 11:11 | ||||
| Есть записи у которых есть номера и есть подномеры, допустим записи: Дата создания | Дата изменения | Номер | Подномер 02.06.2013 | 06.06.2013 | 1 | 1 02.06.2013 | 07.06.2013 | 1 | 2 02.06.2013 | 08.06.2013 | 1 | 3 03.06.2013 | 07.06.2013 | 2 | 1 03.06.2013 | 08.06.2013 | 2 | 2 04.06.2013 | 06.06.2013 | 3 | 1 04.06.2013 | 07.06.2013 | 3 | 2 Допустим (сегодня 09.06.2013), мы выбрали записи за последнии 3 дня, 09.06.2013 включительно: 02.06.2013 | 07.06.2013 | 1 | 2 02.06.2013 | 08.06.2013 | 1 | 3 03.06.2013 | 07.06.2013 | 2 | 1 03.06.2013 | 08.06.2013 | 2 | 2 04.06.2013 | 07.06.2013 | 3 | 2 Эти записи выбраны по дате изменения, выбрали мы последнии записи, нужно присвоить им в параметр STATUS, значение DELETED, НО не всем, только тем у которых вабрана вся запись по номеру, т.е. вся запись целиком, в данном случае нельзя присваивать записям по номерам 1 и 3, а вот номеру 2 нужно присвоить этот статус, т.к. запись выбрана целиком все подномеры данного номера. Если же мы выбираем записи за последнии 4 дня, то в данном случае мы выбрали все записи по 06.06.2013 02.06.2013 | 06.06.2013 | 1 | 1 02.06.2013 | 07.06.2013 | 1 | 2 02.06.2013 | 08.06.2013 | 1 | 3 03.06.2013 | 07.06.2013 | 2 | 1 03.06.2013 | 08.06.2013 | 2 | 2 04.06.2013 | 06.06.2013 | 3 | 1 04.06.2013 | 07.06.2013 | 3 | 2 и проверяем выбраны ли все записи с данными номерами, если нет, то не присваиваем им значение, если да то присваеваем, в данном случае всем присваеваем статус DELETED. А теперь пример выборки:
Не уверен в правильности работы, я выбрал все записи у которых нет статуса DELETED и те записи у которых номера WEIGHET_NO равны и даты создания CREATED тоже равны (т.к. возможно через какое-то время может создастся такая же запись с таким же номером, но дата создания будет другая). Сортировал я их по подномеру WEIGHET_PART, а вот сгруппировал их по дате создания для удобства, в UPDATE наверняка такое не нужно. MODIFY_DATE - это дата изменения мне нужно подобное сделать с UPDATE, что-то типо такого:
Но с условием, выше описанным, что нельзя удолять те записи которые не выбраны полностью, т.е. с этими же номерами и датами создания, если хоть 1 запись не входит в период времени, то она не удоляется, т.е. не присваевает им значения DELETED |
| Автор: Akina 11.6.2013, 11:26 | ||
|
| Автор: SotGE 11.6.2013, 11:36 | ||||
а если подномеров может быть N (бесконечно) колличество? |
| Автор: SotGE 11.6.2013, 11:53 |
Можно пожалуйста поподробнее здесь |
| Автор: Zloxa 11.6.2013, 12:00 | ||
stfg https://www.google.ru/search?q=%D0%BA%D0%BE%D1%80%D1%80%D0%B5%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9+%D0%BF%D0%BE%D0%B4%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81&oq=%D0%BA%D0%BE%D1%80%D0%B5%D0%BB%D0%BB%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9+%D0%BF%D0%BE&aqs=chrome.1.57j0.4702j0&sourceid=chrome&ie=UTF-8 |
| Автор: Akina 11.6.2013, 13:34 |
Получи его подзапросом. |