|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
|
Запрос на проверку10.07.2013, 15:55. Показов 1647. Ответов 12
Метки нет (Все метки)
Есть table1 c данными:
table1 (До внесения данных) id idТовар idАптека Логический 1 456 15 true 2 566 85 true 3 798 12 true table1 (После внесения данных) id idТовар idАптека Логический 1 456 15 false 2 566 85 true 3 798 12 true 4 456 17 true table1 (После запроса на обновление) id idТовар idАптека Логический 1 456 65 false 2 566 85 true 3 798 12 true 4 456 17 true В общем мне нужно сделать Архив ушедших препаратов. Все препараты ушедшие имеют статус False/НЕТ. Архив у меня под idАптеки = 65. Так вот, если в какой то Аптеки имеется False, я запросом на обновление меняю idАптеки на 65 в table1, что соответствует Архиву. Вообще мне нужно в дальнейшем сделать так: Исходя из того нужно Условие1. Делаем проверку в таблице table1 и если значения idАптеки = 65 и соответствующий ему idТовара совпадают с другими idАптеки где idТовара такой же, то удаляем значение с False. Условие2. Если же нету совпадений, то оставляем как есть подскажите как такое реализовать в коде... или может посоветуете способ проще (ну вроде я все учел, хотя могу ошибаться) Добавлено через 1 час 45 минут В общем приходят препараты в базу (сравнивается по idТовара). Иногда препараты уходит из базы (т.е. становятся False). Если препарата "Аспирин" нету со значением True он должен быть со значением False.
0
|
|
| 10.07.2013, 15:55 | |
|
Ответы с готовыми решениями:
12
Запрос на проверку данных на повторы Запрос на проверку Запрос на проверку данных |
|
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
| 10.07.2013, 16:11 | |
|
carry-y, у вас очень непрозрачное ведение аптечного склада. Нет прихода, нет расхода, нет дат операций. Будь приход и расход, можно было бы простыми селектами всегда определить состояние склада на любой момент времени. По нынешней таблице вы этого сделать не сможете. Более того, поскольку не контролируются приход и расход, возможность случайной ошибки резко возрастает - в БД нет самих цифр прихода/расхода и не будет понятно откуда идет ошибка.
Рекомендую отказаться от нынешней структуры данных и перейти на стандартный склад. По меньшей мере с фиксацией прихода и расхода по типу товара и датой операции.
1
|
|
|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
|
| 10.07.2013, 16:27 [ТС] | |
|
спасибо
но у меня не совсем склад, это просто информация по Аптекам и нужно знать когда препарат был последний раз в Аптеке, если ему присвоено значение False и больше ничего не нужно, только это. А архиве всего 2500 наименований и в неделю отсилы пополняется на 5-10 значений сейчас это работает, но очень медленно, я хочу немного другой принцип сделать и увеличить скорость работы: куча запросов, временная таблица, потом проверки с подзапросами In которые ссылаются на запросы от этого мне нужно избавиться. я примерно знаю как сделать, но в sql я пока не так силен и не могу додумать как написать правильно код)
0
|
|
|
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
| 10.07.2013, 17:54 | |
|
Понял.
carry-y, расскажите об особенностях БД. В каком виде приходят данные? Препараты, видимо приходят названиями и типом упаковки? Аптеки названиями? И вы в форме, основанной на table1, выбираете препарат и аптеку? Зачем же тогда всякие временные таблицы? Разве недостаточно сделать в table1 ключом комбинацию полей idТовар, idАптека? Это будет гарантией, что комбинация не повторится. Я понимаю, что выбирать из нескольких тысяч названий нужное нелегко. И каждый день по многу раз. Но все равно непонятно зачем это делать запросами, а не в форме? Особенно если и препараты, и аптеки приходят названиями, а не готовыми кодами. Мне кажется, что сделав форму на table1 с хорошим поиском по товару и аптеке, вы лишитесь многих неудобств. И не нужно будет никаких временных таблиц и многих запросов.
0
|
|
|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
|
| 10.07.2013, 22:10 [ТС] | |
|
существует много Аптек, для каждой аптеки свой idАптеки от 1 до 80, а вот idАптеки = 65 это Архив (там хранятся препараты которых уже нету в Аптеках)
в таблице А_Объявления хранятся товары из аптек, вернее idТовара, idАптеки, Цена, Действующее(тут False либо True -соответственно True это препараты которые есть в аптеках, а False те которых нету уже в аптеках) форма у меня есть, где можно отобрать наименования по любым условиям (дозировка,страна, название и т.д.) процесс заброски следующий (опишу только самое главное): забрасываем прайсы аптек к примеру для idАптеки=14, соответственно для этой Аптеки запросом на обновление меняется значение True на False, затем если такой препарат был уже раньше и пришел опять ему ставиться True, и если еще какой-то новый пришел ему также ставится True в итоге тех препаратов, которых уже нету остаются висеть со значением False. Все просто вроде) Самое главное тут idАптеки=65 сам Архив - там содержатся все препараты со статусом False и я на своей форме могу просмотреть препараты которые сейчас есть в аптеках и которых уже давно нету) Как я обрабатываю Архив (idАптеки=65): запросом на обновление те препараты где Действующие=false, для них я меняю idАптеки на 65, что вполне логично, тем самым у меня все препараты, которых нету в Аптеках есть в idАптеки=65. Ну а дальше я проделываю манипуляции чтобы "отделить мух от котлет". В итоге мне нужно решить проблему описанную в топике)
0
|
|
|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
|
| 10.07.2013, 22:16 [ТС] | |
|
запрос, который мне нужен для меня сложноват пока, вот ищу помощи)
1. во первых допустим во всех Аптеках есть Аспирин, значит в Архиве (idАптеки=65) он нам абсолютно не нужен, так как такой idТовара есть во всех Аптеках 2. А вот если Аспирин исчезнет из всех аптек, вот только тогда мы его должны определить в Архив 3. К примеру Аспирин опять появляется в Аптеках, значит мы его должны удалить из Архива вот мне такой запрос и нужен... день мучаюсь не могу осилить) буду очень рад любой помощи спасибо
0
|
|
|
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
| 10.07.2013, 22:34 | |
|
А зачем, вообще нужен этот архив с ид=65 ? Я как-то не просматриваю его необходимости. Пусть бы себе хранились отсутствующие в своих аптеках. Есть же полный список препаратов в таблице А_Товары, зачем делать к нему усеченный аналог? Я просто не вижу, задач для которых бы понадобился архив с ид=65.
Для отчета по имеющимся препаратам достаточно выбрать из всех аптек только те у которых наличие=True. И бог с ним с архивом. Не нужен он. Ваще.
0
|
|
|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
|
| 10.07.2013, 23:19 [ТС] | |
|
просто тогда будет у каждой Аптеки по Аспирину к примеру в Архиве, мне не важно в какой Аптеки его нету, мне важен сам факт что его нету нигде...
соответственно для каждой idАптеки будет висеть лишние препараты с False
0
|
|
|
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
| 10.07.2013, 23:40 | ||||||
|
carry-y, эти 200-300 тысяч записей в table1 чепуха. Пусть себе висят в каждой аптеке. Если сделать комбинацию поле идТовар, идАптека, Наличие индексной (не ключом, а именно индексом. Ключом должна быть комбинация идТовар, идАптека), то запрос будет отрабатывать мгновенно
1
|
||||||
|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
|
| 11.07.2013, 11:33 [ТС] | |
|
все же как написать запрос, который сравнивает значения где idАптеки=65 c другими значениями idАптеки по idТовара, и если idТовара совпадает - удаляется значение где idАптеки=65
0
|
|
|
|
|
| 11.07.2013, 12:52 | |
|
carry-y,
idАптеки=65 Это какой-то резерв? На случай отсутствия товара, товар перемещается туда где он отсутствует. Да?
0
|
|
|
77 / 21 / 3
Регистрация: 19.05.2013
Сообщений: 221
|
||
| 11.07.2013, 13:14 [ТС] | ||
|
товар которого нету помешается в Архив и там висит, как только этот товар появляется опять то он переходит из Архива в аптеки где он появился
0
|
||
|
3544 / 1118 / 94
Регистрация: 13.03.2011
Сообщений: 1,513
|
||||||||||||
| 12.07.2013, 07:36 | ||||||||||||
Сообщение было отмечено mobile как решение
Решение
2
|
||||||||||||
| 12.07.2013, 07:36 | |
|
Помогаю со студенческими работами здесь
13
Запрос на проверку строк Запрос на проверку строк Запрос на проверку деня рождения
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|