powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SET is deprecated как с эти бороться?
44 сообщений из 44, показаны все 2 страниц
SET is deprecated как с эти бороться?
    #39963422
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8.0.2
Код: plaintext
1.
Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 
'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'.

Features Deprecated in MySQL 8.0
The utf8mb3 character set is deprecated. Please use utf8mb4 instead.

??

как сделать такое?
Код: sql
1.
     SELECT @s:=3;
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963438
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как сделать такое?
Код: sql
1.
     SELECT @s:=3;


Ну тебе ж очень даже вменяемо пишут:
Код: sql
1.
SELECT 3 INTO @s;
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963511
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
раньше делал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
          ELSE @f
     END AS f,
.............


как счас?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963528
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
раньше делал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
          ELSE @f
     END AS f,
.............



как счас?

Вероятно, WHEN state =1 THEN (SELECT @f + 1 INTO @f) .

Хотя я бы сделал так:

Код: sql
1.
2.
3.
@f:=@f+(state=1) AS f
-- или, если в рамках грядущего синтаксиса
(SELECT @f+(state=1) INTO @f) AS f 



А вообще - какая в пень разница? По сравнению с различиями синтаксиса у разных СУБД это изменение - мелочь...
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963535
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Вероятно, WHEN state =1 THEN (SELECT @f + 1 INTO @f) .

Misplaced INTO clause, INTO is not allowed inside subqueries, and must be placed at end of UNION clauses.

Akina
А вообще - какая в пень разница? По сравнению с различиями синтаксиса у разных СУБД это изменение - мелочь...
на изменения наплевать - дело привычки

вопрос как сделать чтоб работало как нужно?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963537
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
       WHEN state =2 THEN @f := @f + 4
       WHEN dat=1 THEN @f := @f + 8
          ELSE @f
     END AS f,
.............


такое как?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963579
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну типа (не эквивалент, но для демонстрации подхода)
Код: sql
1.
@f := @f + (state=1) + (state=2)*4 + (dat=1)*8
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963623
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
это извращение

и проблема в этом
@f := @f ...
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963635
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

это предупреждение, не ошибка.
в 8.0.х еще будет работать
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963680
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
это предупреждение, не ошибка.
в 8.0.х еще будет работать
но надо готовиться
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963700
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем готовиться, можно на 5.7 сидеть еще лет 10
да и на МариюДБ легко перейти
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963705
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
зачем готовиться, можно на 5.7 сидеть еще лет 10
да и на МариюДБ легко перейти
много что можно
но если есть что лучше - почему не пользоваться?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963726
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут согласен, лучше лучшее, чем непонятное новое, поэтому и не упираюсь в 8-ку
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964201
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели нет замены?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964238
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

оракл пересаживает MySQL к стандарту. В стандарте SQL нет юзер переменных. Хотят оставить через SET @my_var... т.е. в процедурах и функциях.
заменить SELECT @a:=@a+1, .... from никак. Ввели WITH (СТЕ) и т.д
пользуйся MariaDB. Там все сохранено. Есть и СТЕ и Оконные функции и т.д.
Т.е. старое остается на старом (а на серьезных проектах никто не оставляет MySQL с автоапдейтом).
Какой тебе нужен еще выход? Поясни.
Большинство кто ставит сервера на Linux сидит с MariaDB, что есть в комплекте, не констатирую но предполагаю.
Я же выше намекнул - вариантов мало, в общем случае
- переделать все в стандарте
- остаться на 5.7
- перейти на Марию (не думаю что у тебя что-то скажется в проектах)
- клиент предпоследнее дело
- последнее ... Ты же выше написал - много что можно.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964241
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
       WHEN state =2 THEN @f := @f + 4
       WHEN dat=1 THEN @f := @f + 8
          ELSE @f
     END AS f,
.............

смысл @f какой?
ведь порядок вычисления
Код: sql
1.
select @a:=1, @b:=@a+1

не гарантирован
почему не
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SET @f:=15;
SELECT
.....
     CASE
       WHEN state =1 THEN  @f + 1
       WHEN state =2 THEN  @f + 4
       WHEN dat=1 THEN @f + 8
          ELSE @f
     END AS f,

и т.д.
т.е. все где @var:= без SET надо переделывать. напрямую нельзя без пока-предупреждения.
и версия 8.0.20, а не 8.0.2, нумерация не через .01 .02 а счетная 1,2,....20
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964325
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

я может не полностью освоил оконные и CTE....
но есть такая задача
есть поле с типами события: с1,с2,..с7
у каждого события есть его время
задача определить время между событиями с2 и с5
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
case 
when field_c='c2' then @f:= field_time
when field_c='c5' then @f := field_time - @f
else null
end as f,
if(c='c5',@f,null) as t

.....


получается просто

к вопросу о переходе на другую субд или о сохранении старой версии - это отдельная тема вне данного топика.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964354
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
задача определить время между событиями с2 и с5
Две копии таблицы гораздо проще и производительнее решат задачу, чем этот геморрой с переменными и полным сканированием таблицы.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964411
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Две копии таблицы гораздо проще и производительнее решат задачу, чем этот геморрой с переменными и полным сканированием таблицы.
lдве копии не надо сканировать? чтоб получить эти копии? но это только часть задач, которые решаются в этом запросе.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964467
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
две копии не надо сканировать?
Напомнить про существование такой фигни как индексы?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964472
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторк вопросу о переходе на другую субд или о сохранении старой версии - это отдельная тема вне данного топика. переход на мариюдб - это простая вещь как поменять сигареты Винстон на Мальборо. Табак один, обертка разная. Ничего критичного в разнице MySQL-MariaDB ты не используешь 99%.
Снять дамп переустановить истинную ДБ от Майкла Видениуса это очень просто.
Интересно зачем в Дебиан менять дефолтный стек MariaDB на уже давно Оракловый MySQL.
Есть нюанс - неизвестно насколько долго Мария будет держать фичи старого MySQL. Но по дефолту - это их принцип.
Но еще раз - MariaDB - это лучший вариант. Поэтому и включают в дистрибутивы по дефолту.
Akina уже отвечал я пока не вчитывался дальше.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964483
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
читаю далее, гром гремит, дождь как из ведра...

ты не показывал ранее смысла
давай по порядку,
автор вадяесть поле с типами события: с1,с2,..с7
у каждого события есть его время
задача определить время между событиями с2 и с5

нормализовать...? или Акина уже говорил об этом...
реально летит только то что в FAQ от Javadbc с переменными,
там обалденно мудрые мысли, но теперь товарищи из Оракле предлагают менять носки на гольфы.
Ты пока не переработаешь все, что на "фичах" старого MySql - будешь в глобальном удивлении.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964485
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Напомнить про существование такой фигни как индексы?
напоминать не надо, надо сравнивать цифры.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964487
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
нормализовать...? или Акина уже говорил об этом...
было бы не плохо, вот только это приходит как данность из стороннего сервиса
Alex_Ustinov
реально летит только то что в FAQ от Javadbc с переменными,
там обалденно мудрые мысли, но теперь товарищи из Оракле предлагают менять носки на гольфы.
Ты пока не переработаешь все, что на "фичах" старого MySql - будешь в глобальном удивлении.
вопрос не в том, а в том как можно реализовать в новых версиях.
пока есть время до выхода 9...
я и хочу начать перерабатывать.
Alex_Ustinov
Интересно зачем в Дебиан менять дефолтный стек MariaDB на уже давно Оракловый MySQL.
привычка.
Alex_Ustinov
Есть нюанс - неизвестно насколько долго Мария будет держать фичи старого MySQL. Но по дефолту - это их принцип.
поставишь на Мария - а она тот же фортель выкинет....
Alex_Ustinov
Но еще раз - MariaDB - это лучший вариант. Поэтому и включают в дистрибутивы по дефолту.
спорное утверждение, но имеет право на существование.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964488
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
... чтоб получить эти копии? но это только часть задач, которые решаются в этом запросе.
покажи эти запросы. В MySQL-е часть запроса - это ничто. Показывай весь запрос, или смысл.
еще
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
case 
when field_c='c2' then @f:= field_time
when field_c='c5' then @f := field_time - @f
else null
end as f,
if(c='c5',@f,null) as t

.....

далее, почему в записи нельзя использовать одну переменную- порядок не гарантирован
т.е.
Код: sql
1.
2.
SET @a:=2020;
SELECT @a, @a:=@a-1010;

может выдать и (1010, 2020) и (2020,1010)
меньше скрывай смысла больше получишь ответов
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964493
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
далее, почему в записи нельзя использовать одну переменную- порядок не гарантирован
я ожидал этого замечания, могу сказать что это обработка вложенного запроса и порядок гарантирован :)
Alex_Ustinov
меньше скрывай смысла больше получишь ответов
к сожалению это не мои структуры и показать много не могу.
просто приведённое решение решает одну из многих задач в этом запросе.

тут ещё такое что это запрос из хранимки, а при использования в хранимке такого предупреждения не возникает ... или ide его не обрабатывает?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964518
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадябыло бы не плохо, вот только это приходит как данность из стороннего сервиса писал выше - никто не ставит автоапдейт МайСкуля тем более системы под проект. В любом случае, как говорил выше - переустановить на Марию - дело Замены масла в двигателе авто.
Вадявопрос не в том, а в том как можно реализовать в новых версиях.
пока есть время до выхода 9...
я и хочу начать перерабатывать.показывай что ты хочешь перерабатывать.
авторпросто приведённое решение решает одну из многих задач в этом запросе.
никакого решения не видно. Показывай смысл запроса.
Интересно зачем в Дебиан менять дефолтный стек MariaDB на уже давно Оракловый MySQL.
авторпривычка. Нет такого в перечне привычек человека. Купить VW и сразу поменять двигатель на Skoda.
Код: sql
1.
2.
Есть нюанс - неизвестно насколько долго Мария будет держать фичи старого MySQL. Но по дефолту - это их принцип.
-- поставишь на Мария - а она тот же фортель выкинет....

специально вставил нюанс - ну того ответа и ожидал
Код: sql
1.
2.
Но еще раз - MariaDB - это лучший вариант. Поэтому и включают в дистрибутивы по дефолту.
-- спорное утверждение, но имеет право на существование.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964526
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тяжело в перехлесте писать
авторНо еще раз - MariaDB - это лучший вариант. Поэтому и включают в дистрибутивы по дефолту.
-- спорное утверждение, но имеет право на существование. это факт, а не утверждение.
Большинство Линукс дистр-ов давно включили MariaDB, а не MySQL. ( LibreOffice а не OpenOffice и т.д.)
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964529
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторя ожидал этого замечания, могу сказать что это обработка вложенного запроса и порядок гарантирован :)подробнее, с примерами
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964533
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторэто баг ide или это фича mysql ? выпилить из "простых запросов" , но оставив в запросах выполняемых в хранимках?а в консоли что показывает, трудно проверить, или действительно где то всплыло...
Код: plaintext
1.
2.
3.
mysql> select version();
| version() |
| 8.0.20    |
проверяемmysql> select @a:=@a+1 as id, t.id from t100 as t, (select @a:=0) as s limit 5;
| id | id |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
5 rows in set, 2 warnings (0.00 sec)
-- пам-парам-парам-пампам - все работает!
mysql> show warnings;
+---------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Warning | 1287 | Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. |
| Warning | 1287 | Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'. |
+---------+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964567
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

ещё раз - переход от mysql - это отдельная тема. и не этого топитка.
Alex_Ustinov
подробнее, с примерами

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
o.field_time as time,
o.field_c as c,
case 
when o.field_c='c2' then @f:= o.field_time
when o.field_c='c5' then @f := fo.ield_time - @f
else null
end as f,
if(o.c='c5',@f,null) as t from
(select  * from tab order by field_time) as o


Alex_Ustinov
а в консоли что показывает, трудно проверить, или действительно где то всплыло...
в данном случае в консоли будет просто констатация .
разработчики ide, мне кажется , должны эти тонкости лучше знать.
(конечно, в orarle будет правильнее спросить, но....)
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964816
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще раз - переход на Марию - плевое дело.
просто у твоего страха глаза велики. можно элементарно тестить на своей машине. Никто не говорит что сразу на продакшен.
И отдельный топик не нужен

что за запрос ты показал.. , переделай без переменных, не нужны они там и больше не вспоминай об этом запросе.
откуда @f берется, если значение не присвоено - то это NULL
Код: sql
1.
when o.field_c='c5' then @f := fo.ield_time - @f 

.....
вот консоль и констатиреет, что пока это неважно.
а GUI показывают и ошибки и предупреждения, работа у них такая
что там ты у Оракла хотел спросить так и не понял
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964824
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
что за запрос ты показал.. , переделай без переменных, не нужны они там и больше не вспоминай об этом запросе.
я бы с удовольствием переделал, но не знаю как
Alex_Ustinov
откуда @f берется, если значение не присвоено - то это NULL
мне не важно что в @f до события с2.
statetimec1t1c2t2nullt3nullt4c4t5c3t6c5t7c2t8с5t9
как вычислить время между с2 и с5?
все остальные строки обязательны к выводу
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964879
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как вычислить время между с2 и с5?
И куда именно его поместить? в дополнительное поле каждой записи? или только у записи с2 или с5, а остальным там присвоить NULL?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964887
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
И куда именно его поместить? в дополнительное поле каждой записи? или только у записи с2 или с5, а остальным там присвоить NULL?
результат можно в доп поле

а для развития - я б хотел увидеть все варианты

LATERAL может помочь?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964913
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяа для развития я б хотел увидеть все варианты такое подозрение, что ты опять ничего не пытался сделать.
Покажи свой вариант с LEFT JOIN
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964926
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
такое подозрение, что ты опять ничего не пытался сделать.
Покажи свой вариант с LEFT JOIN
предложи, у меня не получилось достичь требуемого
проблема в том, что необходимо запомнить где-то значение из строки -как это сделать?
чем может помочь вариант с вариант с LEFT JOIN?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964953
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

показывай что не получилось...странная риторика у тебя последнее время - "у меня не получилось но я хочу чтобы вы ребята мне выложили кучу вариантов для развития".
Как всегда предлагает Акина - фиддл хоть выложи, чтобы было понятно что есть и что ты хочешь.
Когда нужна исходная таблица "целиком", и необходимо что-то "пристыковать справа" - это есть LEFT JOIN. Условия соединения пишем в ON а не в WHERE, любые. Условия в WHERE отфильтруют и исходную таблицу. Ты уже сколько лет с MySQL, это базовые вещи SQL.

авторпроблема в том, что необходимо запомнить где-то значение из строки -как это сделать?Зачем запоминать? Откуда такой "Цикловой подход" перебора?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964965
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,


Alex_Ustinov
Зачем запоминать? Откуда такой "Цикловой подход" перебора?

тут 22143310 "образец" данных
мне надо получить время между с2 и с5
чтоб это сделать надо из времени события с5 вычесть время события с2.
как получит в строке с событиями с5 время предыдущего события с2, что посчитать разницу
(ну и записать её в дополнительный столбец)
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964972
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

делать и думать сам не хочешь, я же все выше пояснил с LEFT JOIN
понятно что у тебя вариантов и не было, иначе показал бы
ну хорошо, я накидал смысл SQL "влоб", раз пишешь диссертацию - доделаешь сам, думать все равно придется
fiddle авторКогда нужна исходная таблица "целиком", и необходимо что-то "пристыковать справа" - это есть LEFT JOIN. Условия соединения пишем в ON а не в WHERE, любые. Условия в WHERE отфильтруют и исходную таблицу. Ты уже сколько лет с MySQL, это базовые вещи SQL.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964975
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
процитируем здесь
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
create table pop(
id int(11) not null auto_increment,
state char(11),
ctime char(11),
PRIMARY KEY (`id`));
INSERT INTO pop(state,ctime) VALUES
('c1',	't1'),
('c2',	't2'),
(null,	't3'),
(null,	't4'),
('c4',	't5'),
('c3',	't6'),
('c5',	't7'),
('c2',	't8'),
('c5',	't9');
select * from pop;
select t_le.*, t_ri.id, t_ri.state, t_ri.ctime from 
pop as t_le left join pop as t_ri 
on t_le.state="c2" and t_ri.state="c5" and t_le.id<t_ri.id;

...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39965001
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

спасибо большое,
но вполне было достаточно написать что LEFT JOIN таблицу с собой по полям
остальное уж дошло бы
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39965154
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот не пойму, если
Код: sql
1.
2.
3.
case 
when o.field_c='c2' then @f:= o.field_time
when o.field_c='c5' then @f := fo.ield_time - @f

переделать на IF()
ТО можно вместо @f подставить не задумываясь этот IF() сюда
Код: sql
1.
if(o.c='c5',@f,null) as t 

и зачем огород городить
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39965175
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
и зачем огород городить
ты совершенно прав, вот только если рассматривать этот кусок как готовый, но там ещё парочка условий, тут показано упрощено, для наглядности.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SET is deprecated как с эти бороться?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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