|
Подскажите с запросом | ☑ | ||
---|---|---|---|---|
0
бегинер
13.09.16
✎
10:42
|
есть две таблицы:
1) справочник_посетители поля: фамилия и т.д. 2) регистр поля: фамилия, дата_посещения нужно получить табличку: фамилия, дата_последнего_посещения счас сделал: выборку всех элементов справочника, потом в цикле делаю запрос на каждый элемент аля "выбрать первые 1 .... упорядочить дата_посещения убыв" одним запросом это можно сделать? если да - то направьте на путь истинный :) в запросах не особо разбираюсь |
|||
1
vicof
13.09.16
✎
10:43
|
путь истинный - курс по запросам
|
|||
2
vicof
13.09.16
✎
10:43
|
тебя спасет левое соединение
|
|||
3
butterbean
13.09.16
✎
10:47
|
просто выбираешь из регистра Фамилия, МАКСИМУМ(дата_посещения) и СГРУППИРОВАТЬ ПО Фамилия
|
|||
4
butterbean
13.09.16
✎
10:48
|
(3) хотя я очень надеюсь, что у тебя все-таки не фамилии в регистре, а ссылки на справочник
|
|||
5
vicof
13.09.16
✎
10:50
|
(4) Таки может быть парню надо всех посетителей, а не только тех, кто посещал
|
|||
6
butterbean
13.09.16
✎
10:51
|
(5) хз, но что это за посетитель, который не посещал...
|
|||
7
бегинер
13.09.16
✎
10:53
|
(3)спасибо!
(4) конечно ссылки, эт я для простоты понимания так написал :) будем курить join запросы |
|||
8
vicof
13.09.16
✎
10:53
|
(6) сейчас протру свой магический шар
|
|||
9
iceman2112
13.09.16
✎
10:55
|
в запросах не особо разбираюсь
|
|||
10
iceman2112
13.09.16
✎
10:56
|
вот это профессионально
|
|||
11
Torquader
13.09.16
✎
11:01
|
(7) Чего там "курить" - открыл конструктор и попробовал.
Скоро за каждым нажатием клавиши на мисту ходить будут. |
|||
12
бегинер
13.09.16
✎
11:48
|
а можно как-то соединять по разным типам?:
например одно поле1="123" поле2="123 т.е. допускается преобразование типов в запросе? |
|||
13
бегинер
13.09.16
✎
11:48
|
поле2=123
так верно, т.е. строка и число |
|||
14
бегинер
13.09.16
✎
15:22
|
усложним задание:
1) справочник_посетители поля: фамилия и т.д. 2) регистр поля: фамилия, дата_посещения, !!!филиал!!! нужно получить табличку: фамилия, дата_последнего_посещения, филиал т.е. филиал в котором он последний раз был. если без филиала делал как советовали: "справочник_посетители соединял левым соединением с регистром, группировка по фамилии и выводил максимум (дата_посещения)" теперь же добавился филиал, и теперь когда соединим через левое соединение - то будут на каждую фамилию - несколько филиалов, с максимальной датой по каждому филиалу. а мне нужен только один филиал на который приходится последнее посещение. запросом такое получиться? подскажите гуру запросов :) |
|||
15
youalex
13.09.16
✎
15:29
|
(14) получай максимальную дату поступления из регистра. цепляй снова с регистром - по посетителю и дате.
|
|||
16
бегинер
13.09.16
✎
15:33
|
(15) предлагаете вариант с циклом? или в одном запросе это можно реализовать?
|
|||
17
ViSo76
13.09.16
✎
15:38
|
(16) Регистр периодический? Если да, то использовать СрезПоследних
|
|||
18
бегинер
13.09.16
✎
15:42
|
(18) не периодический
|
|||
19
бегинер
13.09.16
✎
15:50
|
в 1с в запросе можно делать два раза левое соединение?
SELECT * FROM table1 LEFT JOIN table2 ON table1.id=table2.id LEFT JOIN table3 ON table1.id=table3.id |
|||
20
youalex
13.09.16
✎
15:52
|
(16) в одном запросе
Первое действие у тебя уже есть: ВЫБРАТЬ МАКСИМУМ(), можешь этот результат поместить во временную таблицу: выбрать максимум(Дата), Посетитель ПОМЕСТИТЬ вт_МаксДаты СГРУППИРОВАТЬ ПО ; //2 - запрос - цепляешь к вт_МаксДаты - регистр |
|||
21
youalex
13.09.16
✎
15:53
|
(19) да, причем во втором соединении - для связи будут доступны поля обеих (предыдущих) таблиц
|
|||
22
бегинер
13.09.16
✎
16:48
|
есть список вагонов (аналог фамилии по моему примеру выше) в справочнике, и справочник_архив история его движений (аналог регистра) - дислокация
вот так сделал, но ругается что поле не найдено: Дислокация_архив.номер
|
|||
23
бегинер
13.09.16
✎
16:51
|
1) т.е. сначала сделал выборку: номера вагона и его последняя дата с инфой о его нахождении - поместил во временную таблицу
2) историю движений (ДислокацияВагоныАрхив) не могу соеднить с временной таблицей, ругается что нет полей, как буд-то алиасы не работают эти: Список.Код как номер Максимум(Дислокация.ДатаПолучения) как макс_дата |
|||
24
бегинер
13.09.16
✎
16:55
|
все это делаю в конструкторе запроса в макете отчета, может там эта фича с "Поместить" не работает?
|
|||
25
jsmith
13.09.16
✎
16:58
|
Ничего себе тут у вас творится
|
|||
26
jsmith
13.09.16
✎
17:05
|
ВЫБРАТЬ
Список.Код как Номер, Максимум(Дислокация.ДатаПолучения) как Макс_дата ПОМЕСТИТЬ ВтДислокацияАрхив ИЗ Справочник.ДислокацияВагоныСписок КАК Список ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДислокацияВагоныАрхив КАК Дислокация ПО Список.Код = Дислокация.Номер СГРУППИРОВАТЬ ПО Список.Код; /////////////////////////// ВЫБРАТЬ ДислокацияВагоныАрхив.Номер, ДислокацияВагоныАрхив.Тип, ДислокацияВагоныАрхив.Статус ИЗ Справочник.ДислокацияВагоныАрхив КАК ДислокацияВагоныАрхив ЛЕВОЕ СОЕДИНЕНИЕ ВтДислокацияАрхив КАК ВтДислокацияАрхив ПО ДислокацияВагоныАрхив.Номер = ВтДислокацияАрхив.Номер И ДислокацияВагоныАрхив.ДатаПолучения = ВтДислокацияАрхив.Макс_дата |
|||
27
бегинер
13.09.16
✎
17:06
|
вот так заработало, но странно что как буд-то второе последнее ЛЕВОЕ соединение ведет себя как внутреннее
|
|||
28
бегинер
13.09.16
✎
17:10
|
(27) как (26) сделал уже - просто устал уже за весь день - туплю :)
спасибо
вот в ДислокацияВагоныСписок всего 129 вагонов, а в нашем итоговом запросе как-то больше выходит записей 236 записей |
|||
29
youalex
13.09.16
✎
17:16
|
(27) >странно что как буд-то второе последнее ЛЕВОЕ соединение ведет себя как внутреннее
оно - должно быть внутреннее |
|||
30
бегинер
13.09.16
✎
17:22
|
(29) да!!!!!
спасибо добрый человек, здоровья тебе и всем близким :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |