Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос SQL / 18 сообщений из 18, страница 1 из 1
30.03.2019, 20:44
    #39794140
Помогите составить запрос SQL
Добрый день. Ломаю голову второй день, помогите решить задачу.
Есть таблица ;

-----------------------
A | B | C |
------------------------
a1 b1 0
a2 b2 0
a3 b3 0
a4 b4 0
.. .. ..

Задача, если следующее значение записи совпадает по столбцам, то значение столбца С равно 100 иначе 0


-----------------------
A | B | C |
------------------------
a1 b1 0
a2 b2 100
a2 b2 0
a4 b4 0
.. .. ..


Сначала думал сделать два запроса 1. Полный запрос с присвоением значения колонки С = 0, второй с группировкой с присвоением значения колонки С=100. И объединить результаты запросов с последующей повторной группировкой. Помогите дельным советом или решением.
...
Рейтинг: 0 / 0
30.03.2019, 22:53
    #39794153
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос SQL
Павел Родионовследующее значениеСледующее в каком порядке?
Версия MySQL?
...
Рейтинг: 0 / 0
30.03.2019, 23:03
    #39794155
Помогите составить запрос SQL
miksoft,

Добрый вечер, с учетом Order By по двум полям, порядок последовательный. Если я правильно понимаю версия Apache/2.2.29 (Unix) PHP/5.3.29.
...
Рейтинг: 0 / 0
30.03.2019, 23:04
    #39794156
Помогите составить запрос SQL
Павел Родионов,

Версия клиента базы данных: libmysql - 5.5.30
...
Рейтинг: 0 / 0
30.03.2019, 23:09
    #39794157
Помогите составить запрос SQL
Павел Родионов,

Еще не большое уточнение:

-----------------------
A | B | C |
------------------------
a1 b1 0
a2 b2 100
a2 b2 0
a2 b2 0
a2 b2 0
a2 b2 0
a4 b4 0
...
Рейтинг: 0 / 0
30.03.2019, 23:11
    #39794159
Помогите составить запрос SQL
Павел Родионов,

небольшое*
...
Рейтинг: 0 / 0
31.03.2019, 12:15
    #39794209
Помогите составить запрос SQL
Подскажите, это реально сделать?
...
Рейтинг: 0 / 0
31.03.2019, 12:41
    #39794216
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос SQL
Павел Родионов,

7489069 пункт 2.
Там для одного поля type_a, вам надо расширить до двух полей.
...
Рейтинг: 0 / 0
31.03.2019, 15:20
    #39794255
Помогите составить запрос SQL
Спасибо, зада решена. Просьба разъясните, пожалуйста, как работает эта конструкция:

if(@typex=ta.type_a, -- если "type_a" не изменился

@rownum:=@rownum+1, -- то увеличить счетчик

@rownum:=1+least(0,@typex:=ta.type_a)) AS rown -- иначе скинуть счетчик на 1

-- и занести новое значение в @typex


Я понимаю, что при выполнении условия (@typex=ta.type_a) выполняется при не изменении (@rownum:=@rownum+1), а при изменении "@rownum:=1+least(0,@typex:=ta.type_a)"? Вот этой строки и не понимаю до конца.

Если при не изменении все просто, переменной присваивается новое значение. то тут, что-то не понятное. Если заменить строку @rownum:=1+least(0,@typex:=ta.type_a) на @rownum:= "fdfdf", что бы в случае изменения присваивалось строковое значение, то все перестает работать. пробовал и так @rownum:="fdfdf"+least(0,@typex:=ta.type_a) не работает (.

Подскажите, как работает эта конструкция. "@rownum:=1+least(0,@typex:=ta.type_a)"?
...
Рейтинг: 0 / 0
03.04.2019, 08:34
    #39795508
Помогите составить запрос SQL
Разобрался )), а можно как-то по другому реализовать присвоение переменной @typex:= , а не через функцию LEAST (выбор минимального значения) ?
...
Рейтинг: 0 / 0
03.04.2019, 08:59
    #39795527
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос SQL
Павел Родионова можно как-то по другому реализовать присвоение переменной @typex:= , а не через функцию LEAST (выбор минимального значения) ?Зачем? Какая цель?
...
Рейтинг: 0 / 0
03.04.2019, 12:42
    #39795726
Помогите составить запрос SQL
В случае @rownum:=1+least(0,@typex:=ta.type_a)) AS rown, функция least, выбирает минимальное значение среди тех, которые указана через запятую в скобках (в данном примере мы ставим 0, и считаем его как минимальное) и присваивает это значение переменной @rownum + 1. Если требуется присвоение не числовых значений или нет возможности утверждать, что минимальное число 0. Например, если значение полей будут отрицательные.
...
Рейтинг: 0 / 0
06.04.2019, 11:41
    #39797604
Помогите составить запрос SQL
Доброго времени суток! Разбираюсь с переменными, помогите, что я делаю не так?

Есть поле direction в котором есть два значения 'IN' и 'OUT' и поле с числовым значение Quantity_actually . Если IN то переменной @a присваиваем значение как есть, если 'OUT', то вычитаем из переменной значение числового поля Quantity_actually.

SELECT

IF(Composition_request.direction = 'OUT',

@a := `Composition_request`.Quantity_actually * -1,

@a := `Composition_request`.Quantity_actually ) AS Saleable,

Sum(@a),



`Product_items`.Name_product


FROM

`RequestWork`, `Composition_request`, `Product_items` , (Select @a = 0) zz


WHERE `RequestWork`.`Task_Request` = `Composition_request`.Task_request And `RequestWork`.`Num_Work_Request` = `Composition_request`.Work_request And `Composition_request`.Id_product = `Product_items`.id And (`Product_items` .id = 31) GROUP BY `Product_items`.Name_product

При проверке двумя запросами с условиями 'IN' и 'OUT' и последующим вычитанием одного из другова значения отличаются.
Помогите разобраться, пожалуйста.
...
Рейтинг: 0 / 0
06.04.2019, 11:59
    #39797608
Помогите составить запрос SQL
Если не использовать функцию Sum ,


SELECT

IF(Composition_request.direction = 'OUT',

@a := @a + `Composition_request`.Quantity_actually * -1,

@a := @a + `Composition_request`.Quantity_actually ) AS Saleable,


`Product_items`.Name_product


FROM

`RequestWork`, `Composition_request`, `Product_items` , (Select @a = 0) zz


WHERE `RequestWork`.`Task_Request` = `Composition_request`.Task_request And `RequestWork`.`Num_Work_Request` = `Composition_request`.Work_request And

`Composition_request`.Id_product = `Product_items`.id And (`Product_items` .id = 31) GROUP BY `Product_items`.Name_product

То поле Saleable выводит Null
...
Рейтинг: 0 / 0
06.04.2019, 12:15
    #39797616
Помогите составить запрос SQL
Кажется разобрался, забыл set @a := 0;
...
Рейтинг: 0 / 0
29.10.2019, 01:25
    #39882523
Помогите составить запрос SQL
Доброго времени суток, сломал голову )). Помогите с запросом.

Вот сам запрос:

SELECT DATE_FORMAT (`NW_TASK`.`date_end`, '%d.%m.%Y') as Date,
`NW_POINTS`.`city`,

if(@typex=`NW_POINTS`.`city` and @typexdate=DATE_FORMAT(`NW_TASK`.`date_end`, '%d.%m.%Y'), -- если "type_a" не изменился
@rownum:=0, -- то увеличить счетчик
@rownum:=1+least(0, @typex:=`NW_POINTS`.`city`, @typexdate:=DATE_FORMAT(`NW_TASK`.`date_end`, '%d.%m.%Y') )) AS rown -- иначе скинуть счетчик на 1
-- и занести новое значение в @typex

FROM
`NW_TASK`,
`NW_POINTS`,

(select @rownum:=1, @typex:='_', @typexdate := '_') zz

WHERE `NW_POINTS`.`index_point` = `NW_TASK`.`code_point`

ORDER BY DATE_FORMAT (`NW_TASK`.`date_end`, '%d.%m.%Y'), `NW_POINTS`.`city` ASC

Выводится таблица:
Date city rown
14.10.2019 Город А 1
15.10.2019 Город Б 1
15.10.2019 Город В 1
15.10.2019 Город А 1
16.10.2019 Город Г 1
20.10.2019 Город В 1
24.10.2019 Город Д 1
24.10.2019 Город Д 1
24.10.2019 Город А 1
24.10.2019 Город А 1


Должно быть так:
Date city rown
14.10.2019 Город А 1
15.10.2019 Город Б 1
15.10.2019 Город В 1
15.10.2019 Город А 1
16.10.2019 Город Г 1
20.10.2019 Город В 1
24.10.2019 Город Д 1
24.10.2019 Город Д 0
24.10.2019 Город А 1
24.10.2019 Город А 0
...
Рейтинг: 0 / 0
30.10.2019, 00:05
    #39882920
Помогите составить запрос SQL
Подскажите в каком направлении двигаться?
...
Рейтинг: 0 / 0
30.10.2019, 07:48
    #39882940
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить запрос SQL
Сначала нумеруешь записи в группе, потом CASE заменяет не-единицы на нули.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите составить запрос SQL / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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