|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Есть 2 связанные таблицы: банкоматы и контракты. Связаны по полю серийный_номер банкомата. Когда банкомат перевозится со старого места установки на новое, старый контракт закрывается, а новый открывается. У банкомата в таблице банкоматы может быть флаг что банкомат находится на гарантии. Нужно отобразить все банкоматы на гарантии и отобразить их последнее место установки с адресом Вот пример: таблица1 Банкоматы: серийный номер - текстовый уникальный индекс на_гарантии - логическое значение таблица2 Контракты: системный_номер - индекс, уникальное увеличивающееся число адрес_установки - текстовый банкомат_демонтирован - логическое значение серийный номер - связь с таблицей1 Например я делаю запрос чтобы поле на_гарантии было ИСТИНА, но в результат попадают все места установки из таблицы контракты ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 13:00 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Если у всех контрактов по банкомату кроме последнего в "банкомат_демонтирован" флажок установлен, то добавьте условие False по этому полю. Если нет, то нужна дата контракта, которой в вашей таблице нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 13:09 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Если системный номер контракта при перемещении всегда увеличивается, то создайте сначала запрос, возвращающий максимальный системный номер для каждого серийного номера, а затем в другом запросе свяжите контракты с этим запросом по системному номеру и серийному номеру, а также добавьте таблицу с банкоматами, отобрав те, которые на гарантии. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 13:17 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Dave_ScreamНужно отобразить все банкоматы на гарантии и отобразить их последнее место установки с адресом Добавте в таблица_2 поле "Дата установки" Максимальная дата и будет последним местом установки. С уважением. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 13:18 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
MrShin, Ваш вариант то что нужно! Но подскажите как сделать запрос, который бы возвратил для банкомата контракт с максимальным (последним) системным номером? И как в access потом сделать выборку из выборки? Делать два запросы или можно одним как-то по хитрому обойтись, Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 14:27 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Dave_Scream, Простейший запрос с группировкой, проще нарисовать в конструкторе: Код: sql 1. 2. 3.
Можно и одним запросом, но придется использовать подзапрос, а конструктор их не очень хорошо поддерживает, придется редактировать текст руками. Поэтому проще сначала сохранить запрос с группировкой, а затем использовать его как обычную таблицу в конструкторе. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 15:03 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
MrShin, А чисто для образовательных целей можете скинуть SQL запрос или пример? Я сейчас возился пытаясь описать блок Where, но это просто возвращает самый последний id контракта: SELECT Контракты.id, Устройства.serial_number, Контракты.[Полный адрес] FROM Устройства INNER JOIN Контракты ON Устройства.serial_number = Контракты.serial_number WHERE (Контракты.id = Select max("id") from Контракты) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 15:07 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
MrShin, Получилось в 2 запроса: Сначала создал запрос "серийный номер" - "максимальный ID" и через этот запрос связал между собой таблицы Устройства и Контракты - всё получилось, спасибо) Жаль мало чего понял :( ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 15:22 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Вот такая таблица получилась, но проблема - её нельзя редактировать,т.к. result set не является обновляемым - возможно ли его сделать обновляемым? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 17:16 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Как запрос с групповой операцией сделать обновляемым/редактируемым? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 17:57 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Dave_Scream, никак ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2016, 18:02 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Dave_Scream, В запросе нужно еще связать поля serial_number между MaxID и Контракты, а Устройства лучше связывать также с Контрактами. В принципе в данном случае разницы нет, но при других видах запросов это может повлиять на результаты. Если в запросе или любой его части - запрос, подзапрос - есть группировка, то запрос будет нередактируемым, увы, это ограничение Акцесса, в других базах данных также есть некие ограничения на групповые операции, но не такие жесткие. В вашем случае запрос можно сделать редактируемым, если заменить подзапрос на функцию DMax в основном запросе, поищите на форуме, тут много таких примеров ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 06:34 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
MrShin, Вот рабочий запрос: Код: sql 1. 2.
Подскажите как правильно заменить обращение к промежуточному запросу MaxID на функцию Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 10:47 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 11:16 |
|
Сделать умную выборку из двух связанных таблиц
|
|||
---|---|---|---|
#18+
Спасибо) Я так пробовал, только не додумался как правильно оформить третий параметр DMax - там нужны кавычки "'" "'' как в выражениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.09.2016, 11:31 |
|
|
start [/forum/topic.php?fid=45&msg=39313373&tid=1613127]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 372ms |
total: | 520ms |
0 / 0 |