powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Упростить запрос
6 сообщений из 6, страница 1 из 1
Упростить запрос
    #38393504
Include.nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. Имеется данный запрос. Во-первых, хотелось бы его как-нибудь упростить/оптимизировать. А во-вторых, для SELECT'a с base = 124, тоже надо как-нибудь вывести MIN(i2) и потом найти минимум между этим значением и значением MIN(i2) для base = 126. Как-нибудь это можно реализовать?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
SELECT id, MIN(i2)
FROM `records` as `tbl1`
WHERE base = 126
  and g1 in (
    SELECT id
    FROM `records`
    WHERE base = 125
      and g1 in (
        SELECT id
        FROM `records`
        WHERE base = 124
          and g2 in (
            SELECT id
            FROM `records`
            WHERE base = 123
              and g1 = 34845
)))
...
Рейтинг: 0 / 0
Упростить запрос
    #38393553
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Include.nv,

переписать на JOIN, переместив условия в часть ON. Это по первой части "упростить"... а по остальному - ничего не понял, подробнее что-ли...
...
Рейтинг: 0 / 0
Упростить запрос
    #38393670
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select r.id, r.i126, r.i124, if(r.i124<r.i126,r.i124,r.i126)i2
from (
   select r.id, min(r.i2) i126, min(g.i124)i124
   from (
      SELECT r.id, MIN(r.i2) i124
      FROM records c
      JOIN records r on r.base=124 and r.g2=c.id
      where c.base = 123 and c.g1=34845
      group by r.id
   ) g
   JOIN records c on c.base=125 and c.g1=g.id
   join records r on r.base=126 and r.g1=c.id
   group by r.id
   ) r;
...
Рейтинг: 0 / 0
Упростить запрос
    #38393960
Include.nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arhat109,

По второй части попытаюсь подробнее. Данный запрос(который в топике) находит минимальное значение поля i2 с base = 126. Хотелось бы в этом же запросе найти минимальное значение поля i2 с base = 124. И потом найти минимальное значение между ними.
Так попонятней?
...
Рейтинг: 0 / 0
Упростить запрос
    #38393966
Include.nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select r.id, r.i126, r.i124, if(r.i124<r.i126,r.i124,r.i126)i2
from (
   select r.id, min(r.i2) i126, min(g.i124)i124
   from (
      SELECT r.id, MIN(r.i2) i124
      FROM records c
      JOIN records r on r.base=124 and r.g2=c.id
      where c.base = 123 and c.g1=34845
      group by r.id
   ) g
   JOIN records c on c.base=125 and c.g1=g.id
   join records r on r.base=126 and r.g1=c.id
   group by r.id
   ) r;


Ваш запрос почему-то выводит все записи. А по идеи, должно вывестись только минимальное значение. Т.е. одна запись.
...
Рейтинг: 0 / 0
Упростить запрос
    #38394126
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
банально
Код: sql
1.
2.
3.
4.
5.
6.
SELECT min(r.i2) i126, min(g.i2)i124, if(min(r.i2)<min(g.i2), min(r.i2), min(g.i2)) i2
FROM records s
JOIN records g on g.base=124 and g.g2=s.id
JOIN records c on c.base=125 and c.g1=g.id
JOIN records r on r.base=126 and r.g1=c.id
WHERE s.base = 123 and s.g1=34845
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Упростить запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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