powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Помогите составить запрос с объединением
18 сообщений из 18, страница 1 из 1
Помогите составить запрос с объединением
    #37256544
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть две таблицы: а - с датами, фио; b - с датами изменения значений, ФИО и с самими значениями. Необходимо составить запрос, чтобы получить таблицу как на рисунке, прикрепленном к сообщению. Пыталась делать левым соединением с разными условиями, но не получается.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37256583
WarAnt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisa,

Код: plaintext
1.
2.
SELECT t1.date,t1.fio,t2.value 
FROM table1 t1 left 
        JOIN table2 t2 ON t1.fio=t2.fio AND t2.date<=t1.date
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37256620
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WarAnt, к сожалению, приведенный вами запрос, я уже пробовала. Он не выдает нужный результат.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37256628
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нумеруте своих Ивановых, Зиновьевых и прочих согласно возрастанию даты. А потом уже соединяете результаты по полученному номеру и имени
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37256748
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь конечно, но вообще-то делают отдельный справочник по ФИО. Ну и тогда соединение по Id-ам.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37256770
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisa,

Код: plaintext
1.
SELECT t1.date,t1.fio,(select top  1  t2.value from table2 t2 where t2.fio = t1.fio and t2.date<=t1.date order by t2.date desc)
FROM table1 t1
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37256874
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир СА,
данные две исходные таблицы - результаты других запросов.

iljy,
благодарю!
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258214
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как все-таки сделать запросом с соединением? Не очень поняла метод, предложенный Glory.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258220
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisaА как все-таки сделать запросом с соединением? Не очень поняла метод, предложенный Glory.
Ну... ежели ты объяснишь по какому принцЫпу получена ПЕРВАЯ строка Результата... то можно и соединением.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258250
iljy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisaА как все-таки сделать запросом с соединением? Не очень поняла метод, предложенный Glory.
А зачем? Ну вот так можно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT t1.date,t1.fio,t2.value 
FROM table1 t1 left JOIN table2 t2 ON t1.fio=t2.fio AND
			t2.date=(select top  1  t3.date from table2 t3
					 where t3.date <= t1.date and t3.fio = t1.fio order by t3.date desc)
					 
SELECT t1.date,t1.fio,
	substring(max(convert(char( 8 ), t2.date,  112 ) + cast(t2.value as varchar)), 9 , 8000 )
FROM table1 t1 left JOIN table2 t2 ON t1.fio=t2.fio AND t2.date <= t1.date
group by t1.date, t1.fio


select t2.*
from(
	SELECT t1.date,t1.fio, max(t2.date) d2
	FROM table1 t1 left JOIN table2 t2 ON t1.fio=t2.fio AND t2.date <= t1.date
	group by t1.date, t1.fio
)t join table2 t2 on t2.fio = t.fio and t2.date = t.date
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258429
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iljy, на самом деле запрос нужен не только для sql server, но и под аналогичную ситуацию для 1С:Предприятие 8. А 1с не принимает в качестве поля выборки вложенный запрос. Третий запрос, из приведенных Вами, подходит, но возвращает пустой результат. Попробую его на sql server'е выполнить и проверить что он выдаст.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258456
linke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisa,

Все он там понимает. только по 1с форум другой.
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258632
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
linke,
повторюсь, 1с не принимает в качестве поля выборки вложенный запрос. Да, я понимаю, что по сути - вопрос не в тему. Но язык запросов 1с аналогичен языку запросов sql.

iljy ,
проверила на sql server'е третий запрос, он выдает только строку 02-03-2011 Иванов 1000. Может быть в нем ошибка? Посмотрите, пожалуйста.

Код: plaintext
1.
2.
3.
4.
5.
select t2.*
from(
	SELECT t1.date,t1.fio, max(t2.date) d2
	FROM table1 t1 left JOIN table2 t2 ON t1.fio=t2.fio AND t2.date <= t1.date
	group by t1.date, t1.fio
)t join table2 t2 on t2.fio = t.fio and t2.date = t.date

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37258976
linke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisalinke,
повторюсь, 1с не принимает в качестве поля выборки вложенный запрос. Да, я понимаю, что по сути - вопрос не в тему. Но язык запросов 1с аналогичен языку запросов sql.



Мне вот интересно где он не понимает, пример можно?
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37259130
s.vasilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
linke,

SELECT t1.a a, t2.b b, (SELECT...) c
FROM t1
Вложенный запрос 1с в поле выборки у 1с не пройдет, инфа 100%
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37259184
linke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s.vasilisa,

Тогда как вариант через временные таблицы, или вариант предложенный iljy
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37259206
narval
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то у меня одним селектом тоже не очень получается. Двумя конечно, вроде того:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ВЫБРАТЬ
	tbl1.FIO КАК FIO,
	tbl2.value,
	tbl1.Date КАК Date,
	ЕСТЬNULL(tbl2.Date, ДАТАВРЕМЯ( 2100 ,  1 ,  1 )) КАК Date1
ПОМЕСТИТЬ Темп1
ИЗ  tbl1 КАК tbl1 ЛЕВОЕ СОЕДИНЕНИЕ tbl2 КАК tbl2
	ПО tbl1.FIO = tbl2.FIO И tbl1.Date >= tbl2.Date
;
ВЫБРАТЬ Темп1.FIO, Темп1.value, Темп1.Date
ИЗ  Темп1 КАК Темп1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ 
		(ВЫБРАТЬ
			Темп1.FIO КАК FIO,
			Темп1.Date КАК Date,
			МАКСИМУМ(Темп1.Date1) КАК Date1
		ИЗ  Темп1 КАК Темп1
		СГРУППИРОВАТЬ ПО Темп1.FIO, Темп1.Date) КАК Темп2
		ПО Темп1.FIO = Темп2.FIO
			И Темп1.Date = Темп2.Date
			И Темп1.Date1 = Темп2.Date1
...
Рейтинг: 0 / 0
Помогите составить запрос с объединением
    #37260403
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одним запросом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
ВЫБРАТЬ
	Таб1.Data,
	Таб1.ФИО,
	Таб2.Value
ИЗ
	Справочник.Table1 КАК Таб1 ЛЕВОЕ СОЕДИНЕНИЕ
	
	( ВЫБРАТЬ	
		Таблица1.Data КАК Дата1,
		Таблица1.ФИО КАК ФИО,
		МАКСИМУМ(Таблица2.Data) КАК Дата2
	ИЗ
		Справочник.Table1 КАК Таблица1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ
		Справочник.Table2 КАК Таблица2
			ПО Таблица1.ФИО = Таблица2.ФИО И Таблица1.Data >= Таблица2.Data
		СГРУППИРОВАТЬ ПО Таблица1.ФИО, Таблица1.Data ) КАК Промежут
	ПО Таб1.ФИО = Промежут.ФИО И Таб1.Data = Промежут.Дата1
	
	ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Table2 КАК Таб2
	ПО Промежут.ФИО = Таб2.ФИО И Промежут.Дата2 = Таб2.Data
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Помогите составить запрос с объединением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]