Помогите с запросом

Технические вопросы по UTM 5.0
Ответить
ratelcom
Сообщения: 31
Зарегистрирован: Сб май 07, 2005 04:07

Помогите с запросом

Сообщение ratelcom »

SELECT ip_groups.upass, ip_groups.uname, basic_account AS aid, accounts.is_blocked, inet_ntoa( ip_groups.ip & 0xffffffff)
FROM users
INNER JOIN accounts ON accounts.id = users.basic_account
INNER JOIN service_links ON service_links.account_id = users.basic_account
INNER JOIN iptraffic_service_links ON iptraffic_service_links.id = service_links.id
INNER JOIN ip_groups ON ip_groups.ip_group_id = iptraffic_service_links.ip_group_id
WHERE users.is_deleted =0
AND accounts.is_deleted =0
AND iptraffic_service_links.is_deleted =0
AND ip_groups.is_deleted =0
AND ip_type=0
GROUP BY users.id,users.basic_account, accounts.is_blocked,users.full_name


надо добавить в него вывод ID текущего тарифа пользователя

если можете объясните, почему, если убрать в конце users.full_name - запрос зависает надолго

andrew.rbe
Сообщения: 36
Зарегистрирован: Ср фев 10, 2010 14:05

Сообщение andrew.rbe »

Вот так, по идее, быстрее будет

Код: Выделить всё

SELECT ip_groups.upass, ip_groups.uname, basic_account aid, accounts.is_blocked, inet_ntoa( ip_groups.ip & 0xffffffff), account_tariff_link.tariff_id 
FROM users, accounts, users_accounts, service_links, iptraffic_service_links, ip_groups, account_tariff_link 
WHERE users.id = users_accounts.uid 
AND accounts.id = users_accounts.account_id 
AND service_links.account_id = accounts.id 
AND iptraffic_service_links.id = service_links.id 
AND ip_groups.ip_group_id = iptraffic_service_links.ip_group_id 
AND account_tariff_link.id = service_links.tariff_link_id 
AND ip_groups.is_deleted = 0 AND ip_type = 0
Исходный запрос можно так сделать:

Код: Выделить всё

SELECT ip_groups.upass, ip_groups.uname, basic_account AS aid, accounts.is_blocked, inet_ntoa( ip_groups.ip & 0xffffffff), account_tariff_link.tariff_id 
FROM users 
INNER JOIN accounts ON accounts.id = users.basic_account 
INNER JOIN service_links ON service_links.account_id = users.basic_account 
INNER JOIN iptraffic_service_links ON iptraffic_service_links.id = service_links.id 
INNER JOIN ip_groups ON ip_groups.ip_group_id = iptraffic_service_links.ip_group_id 
INNER JOIN account_tariff_link ON  account_tariff_link.id = service_links.tariff_link_id  
WHERE users.is_deleted =0 AND accounts.is_deleted =0 AND iptraffic_service_links.is_deleted =0 AND ip_groups.is_deleted =0 AND ip_type=0  GROUP BY users.id,users.basic_account, accounts.is_blocked,users.full_name;
p.s. А зачем GROUP BY ?

Ответить