Собственно, сам запрос:
Код: Выделить всё
SELECT users.id as uid, users.login, users.basic_account AS aid, accounts.is_blocked, users.full_name, accounts.balance, accounts.credit,
(
SELECT GROUP_CONCAT(inet_ntoa( ip_groups.ip & 0xffffffff ))
FROM ip_groups, iptraffic_service_links, service_links, users
WHERE ip_groups.ip_group_id=iptraffic_service_links.ip_group_id
AND service_links.id=iptraffic_service_links.id
AND service_links.account_id=users.basic_account
AND users.id=uid
AND users.is_deleted=0
AND service_links.is_deleted=0
AND ip_groups.is_deleted=0
) AS uip
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
$wh
ORDER BY $ord
LIMIT $start, $limit
Назначение запроса - вытаскивать инфу о юзере (и список юзеров), основываясь на любом из полей БД UTM5 + самодописанных, причем необходимо делать это именно одним запросом.
Короче, тупо поиск =)
Косяк в том, что в случае, если ip-групп у данного юзера больше, чем 1, то rows возвращается столько, сколько у него ip-групп. Соответственно, при простом выводе списка даже без доп. "$wh", выводятся дублирующие записи
Помогите сформировать запрос пограмотнее, заранее благодарю =)