powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос к таблице с добавлением полей
8 сообщений из 8, страница 1 из 1
Запрос к таблице с добавлением полей
    #39386267
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день!

Есть следующая таблица Doc:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
id type_doc	user_id	dt_create	dt_sell	        dt_end
1	 1  	  281	15.01.2017	15.03.2017	15.01.2018
2	 2	  281	15.01.2017	16.01.2017	16.01.2017
3	 2	  281	16.01.2017	16.01.2017	16.01.2017
					
4	 1	  282	17.01.2017	17.03.2017	17.01.2018
5	 2	  282	17.01.2017	17.01.2017	17.01.2017
6	 2	  282	18.01.2017	18.01.2017	18.01.2017

нужно так построить запрос, чтобы в запрос выводились все поля + дополнительные поля dt_sell_1, dt_end_1
которые бы содержали значения dt_sell, dt_end из первой записи в разрезе user_id.
Т. е. вот что должно получиться в итоге:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
id type_doc user_id	dt_create	dt_sell	        dt_end	        dt_sell_1	dt_end_1
1	1	281	15.01.2017	15.03.2017	15.01.2018	15.03.2017	15.01.2018
2	2	281	15.01.2017	16.01.2017	16.01.2017	15.03.2017	15.01.2018
3	2	281	16.01.2017	16.01.2017	16.01.2017	15.03.2017	15.01.2018
							
4	1	282	17.01.2017	17.03.2017	17.01.2018	17.03.2017	17.01.2018
5	2	282	17.01.2017	17.01.2017	17.01.2017	17.03.2017	17.01.2018
6	2	282	18.01.2017	18.01.2017	18.01.2017	17.03.2017	17.01.2018

для всех записей WHERE user_id = 281 полю dt_sell_1 присваивается значение поля dt_sell из первой записи (первая запись та, где
type_doc = 1), нужно взять dt_sell (15.03.2017) и подставить во все dt_sell_1 WHERE user_id = 281.

на всяк. случай для наглядности добавил скриншот,
прошу помощи, возможно ли такое реализовать SQL-запросом?
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39386293
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока получился такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT `id`, `type_doc`, `user_id`, `dt_create`, `dt_sell`, `dt_end`, 
(
SELECT `dt_sell` AS `dt_sell_1`
FROM `doc`
WHERE `user_id` =281 AND `type_doc` =1
)
, 
(
SELECT `dt_end` AS `dt_end_1`
FROM `doc`
WHERE `user_id` =281 AND `type_doc` =1
)
FROM `doc`
WHERE `user_id` =281


- есть два вопроса:
1. оператор AS `dt_sell_1` не срабатывает, вместо имени столбца `dt_sell_1` выводится "("
как это исправить?
2. как переписать запрос, чтобы задавать условие WHERE `user_id` =281, т.е., чтобы запрос выполнялся в разрезе `user_id` автоматически?
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39386294
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Miko_v,
вернее так
2. как переписать запрос, чтобы НЕ задавать условие WHERE `user_id` =281
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39389767
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поправил запрос (самому смешно от своей ошибки :) )
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT `id`, `type_doc`, `user_id`, `dt_create`, `dt_sell`, `dt_end`, 
(
SELECT `dt_sell` 
FROM `doc`
WHERE `user_id` =281 AND `type_doc` =1
) AS `dt_sell_1`
, 
(
SELECT `dt_end` 
FROM `doc`
WHERE `user_id` =281 AND `type_doc` =1
) AS `dt_end_1`
FROM `doc`
WHERE `user_id` =281



А вот со вторым вопросом сложнее:
2. как переписать запрос, чтобы НЕ задавать условие WHERE `user_id` =281, т.е., чтобы запрос выполнялся в разрезе `user_id` автоматически?

подскажите пожалуйста, возможно ли сделать такую выборку?
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39389797
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В показанном примереMiko_vdt_sell, dt_end из первой записи в разрезе user_idравны максимальному значению поля в группе.

Если это всегда так - используйте MAX().
Есkи нет - читайте FAQ: Выборка первой/последней записи в группах .
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39390179
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо за совет,
но мне важно выбрать из каждой группы даты (dt_sell, dt_end ) по условию где type_doc` =1 а не максимальное значение.

И в выборку должны попадать не только строки где type_doc` =1 а все записи таблицы, но с дополнительными полями
dt_sell_1, dt_end_1, которые содержат значения полей dt_sell, dt_end из записи где type_doc` =1 и все это в разрезе user_id

смотрел ссылку, пока непонятно как по этим примерам можно написать такой запрос.
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39390272
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Miko_vмне важно выбрать из каждой группы даты (dt_sell, dt_end ) по условию где type_doc` =1Тогда получить эти значения в подзапросе, делов-то...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT
           t1.id
         , t1.type_doc
         , t1.user_id
         , t1.dt_create
         , t1.dt_sell
         , t1.dt_end
         , t3.dt_sell dt_sell_1
         , t3.dt_end dt_end_1

FROM
        doc t1, 
(       SELECT t2.user_id
             , t2.dt_sell
             , t2.dt_end
        FROM doc t2
        WHERE type_doc =1
) t3

WHERE 
        t1.user_id = t3.user_id
...
Рейтинг: 0 / 0
Запрос к таблице с добавлением полей
    #39390582
Miko_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

Спасибо Вам большое!
Это именно то что было нужно! :)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос к таблице с добавлением полей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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