powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сводная таблица
7 сообщений из 7, страница 1 из 1
сводная таблица
    #39813811
МавДи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех приветствую!
Есть три таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
т1:
хлор
вода

т2:
цех1
цех2

т3:
цех1 хлор 10
цех2 вода 15

нужно получить результат:
т4:
цех1	хлор	10
цех1	вода	0
цех2	хлор	0
цех2	вода	15




возможно ли это в принципе и как?
...
Рейтинг: 0 / 0
сводная таблица
    #39813816
МавДи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например такой запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
SELECT
loc_id,
com_id,
t3.val
FROM
  tbl_locations t1
  JOIN
  tbl_components t2
LEFT JOIN
  (
      SELECT
    log_loc_id loc,
    max(log_value) val
    FROM
    tbl_log
    GROUP BY
    loc
  ) AS t3
  ON
  t1.loc_id = t3.loc



нужного результата не дает
...
Рейтинг: 0 / 0
сводная таблица
    #39813818
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT t1.loc_id, 
       t2.com_id, 
       COALESCE(MAX(t3.log_value), 0) val
FROM ( tbl_locations t1, 
       tbl_components t2 )
LEFT JOIN tbl_log t3 
    ON t1.loc_id = t3.log_loc_id 
   AND t2.com_id = t3.log_com_id
GROUP BY t1.loc_id, 
         t2.com_id
...
Рейтинг: 0 / 0
сводная таблица
    #39813819
МавДи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, благодарю, запрос дал то, что нужно.
Однако у меня тоже получился вариант, можете сравнить, что оптимальнее:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
SELECT
loc_id,
com_id,
t3.id,
t3.val,
t3.dtime
FROM
  tbl_locations t1
  JOIN
  tbl_components t2
LEFT JOIN
  (
      SELECT
    log_loc_id loc,
    log_com_id comp,
    log_loc_id id,
    max(log_datetime) dtime,
    max(log_value) val
    FROM
    tbl_log
    GROUP BY
    loc, comp
  ) AS t3
  ON
  t1.loc_id = t3.loc
  AND
  t2.com_id = t3.comp



отдает он тоже самое, смущает только необходимость агрегации поля log_value
что скажете?
...
Рейтинг: 0 / 0
сводная таблица
    #39813823
МавДи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МавДи,
в Вашем запросе тоже нужно вычислять MAX(t3.log_value), это нормально?
мне кажеться нелогично выислять максимум в группе, если там одна запись
вот итоговый запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT t1.loc_id,
       t2.com_id,
       t1.loc_name,
       t2.com_name,
       max(t3.log_value),
       COALESCE(MAX(t3.log_datetime), 0) val
FROM ( tbl_locations t1,
       tbl_components t2 )
LEFT JOIN tbl_log t3
    ON t1.loc_id = t3.log_loc_id
   AND t2.com_id = t3.log_com_id
GROUP BY t1.loc_id,
         t2.com_id
...
Рейтинг: 0 / 0
сводная таблица
    #39813830
МавДи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подниму вопрос, запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT
    t1.loc_id id_location,
    t2.com_id id_comp,
    t1.loc_name location,
    t2.com_name component,
    MAX(t3.log_value) val,
    COALESCE(MAX(t3.log_datetime), 0) dtime
FROM
( tbl_locations t1,
       tbl_components t2 )
LEFT JOIN
tbl_log t3
    ON
     t1.loc_id = t3.log_loc_id
   AND
    t2.com_id = t3.log_com_id
    AND
    t3.log_datetime<now()
GROUP BY
 t1.loc_id,
 t2.com_id



возвращает неверные занчения в колонке val
кроме того нужно получить id записи из t3

прошу помощи...
...
Рейтинг: 0 / 0
сводная таблица
    #39813840
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МавДиу меня тоже получился вариант, можете сравнить, что оптимальнее:
Мой - даже думать не нужно.
МавДивозвращает неверные занчения в колонке val
Вы изменили исходную задачу. А она требует иного подхода. См. FAQ: Выборка первой/последней записи в группах .
Сделайте fiddle со структурами и образцом данных, дайте ссылку и требуемый эталонный ответ.
И укажите точную версию сервера - на последней задаче это важно.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / сводная таблица
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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