powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема с подзапросами
6 сообщений из 6, страница 1 из 1
Проблема с подзапросами
    #39221771
mnbcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Составляю отчет о работе операторов за день.
Проблемы:
1) Во втором подзапросе нельзя выбрать из временной таблицы temp_zvonki_no_rabot еще раз, ошибка: "Can't reopen table: 'temp_zvonki_no_rabot' SQL4.sql 10 53 ", поэтому создается две временные таблицы temp_zvonki_no_rabot и temp_zvonki_no_rabot2.

2) Нельзя создать больше 2 подзапросов, запрос зависает из-за 3-го подзапроса:
Код: sql
1.
  (SELECT COUNT(*) FROM kvartirant WHERE kvartirant.operator_id_work = `users`.id) AS count_klient




Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
DROP TEMPORARY TABLE IF EXISTS temp_zvonki_no_rabot;
CREATE TEMPORARY TABLE temp_zvonki_no_rabot
    	SELECT * FROM zvonki WHERE start_zvonka > '2016-04-20 01:00';

DROP TEMPORARY TABLE IF EXISTS temp_zvonki_no_rabot2;
CREATE TEMPORARY TABLE temp_zvonki_no_rabot2
    	SELECT * FROM zvonki WHERE start_zvonka > '2016-04-20 01:00';


SELECT `users`.*, (SELECT COUNT(*) AS count_zv FROM temp_zvonki_no_rabot WHERE temp_zvonki_no_rabot.user_id = `users`.id AND temp_zvonki_no_rabot.end_zvonka IS NOT NULL) AS count_zvonkov,
(SELECT COUNT(DISTINCT temp_zvonki_no_rabot2.kvartirant_id) AS count_zv_unique_kvt FROM temp_zvonki_no_rabot2 WHERE temp_zvonki_no_rabot2.user_id = `users`.id AND temp_zvonki_no_rabot2.end_zvonka IS NOT NULL) AS count_zvonkov_new_klient,
  (SELECT COUNT(*) FROM kvartirant WHERE kvartirant.operator_id_work = `users`.id) AS count_klient
  FROM `users` WHERE `users`.is_active = 1 AND `users`.is_only_agent <> 1 ORDER BY `users`.date_add DESC 
...
Рейтинг: 0 / 0
Проблема с подзапросами
    #39221984
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Планы запросов - где? DDL участвующих в них таблиц - где?
PS.
mnbczend_zvonka
count_zvonkov
count_klient
...
Рейтинг: 0 / 0
Проблема с подзапросами
    #39222458
Krevedko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbcz,

1. Такая таблица не может быть использована в запросе 2 раза http://www.sql.ru/forum/161052/mysql-i-vremennye-tablicy
2. Поле kvartirant.operator_id_work - ключом является? зависает или долго выполняется?
условие "temp_zvonki_no_rabot.end_zvonka IS NOT NUL" перенесите в создание временной таблицы
...
Рейтинг: 0 / 0
Проблема с подзапросами
    #39222494
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mnbczпоэтому создается две временные таблицы
Ну с первой понятно... а почему вторая не создаётся просто SELECTом из первой?
...
Рейтинг: 0 / 0
Проблема с подзапросами
    #39222924
mnbcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Krevedko,

Такой запрос выполняется 1 минуту, из-за этого подзапроса:
Код: sql
1.
  (SELECT COUNT(*) FROM kvartirant WHERE kvartirant.operator_id_work = `users`.id) AS count_klient



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
DROP TEMPORARY TABLE IF EXISTS temp_zvonki_no_rabot;
CREATE TEMPORARY TABLE temp_zvonki_no_rabot
    	SELECT * FROM zvonki WHERE start_zvonka > '2016-04-22 01:00' AND end_zvonka IS NOT NULL;

DROP TEMPORARY TABLE IF EXISTS temp_zvonki_no_rabot2;
CREATE TEMPORARY TABLE temp_zvonki_no_rabot2
    	SELECT * FROM temp_zvonki_no_rabot;


SELECT `users`.*, (SELECT COUNT(*) AS count_zv FROM temp_zvonki_no_rabot WHERE temp_zvonki_no_rabot.user_id = `users`.id) AS count_zvonkov,
(SELECT COUNT(DISTINCT temp_zvonki_no_rabot2.kvartirant_id) AS count_zv_unique_kvt FROM temp_zvonki_no_rabot2 WHERE temp_zvonki_no_rabot2.user_id = `users`.id) AS count_zvonkov_new_klient,
  (SELECT COUNT(*) FROM kvartirant WHERE kvartirant.operator_id_work = `users`.id) AS count_klient
  FROM `users` WHERE `users`.is_active = 1 AND `users`.is_only_agent <> 1 ORDER BY `users`.date_add DESC 
  
...
Рейтинг: 0 / 0
Проблема с подзапросами
    #39222925
mnbcz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mnbcz,

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


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