Этот странный SQL, 2 запроса - разный результат
Здравствуйте! Есть база данных, есть запрос на SELECT, он повешен на MyQuery, соотвественно отрабатывает при старте программы:
Код:
SELECT users.id AS uid, users.login, users.password, users.basic_account, FROM_UNIXTIME( users.create_date ) AS ucd , FROM_UNIXTIME( users.last_change_date ) AS ulcd, accounts.is_blocked, users.full_name, accounts.balance, accounts.credit, inet_ntoa( ip_groups.ip & 0xffffffff ) AS ip_adress, ip_groups.mac AS mac, users.actual_address, users.work_telephone, users.home_telephone, users.mobile_telephone, users.icq_number, users.house_id, users.flat_number, users.entrance, users.floor, users.district, users.remote_switch_id, users.port_number, users.is_deleted, service_links.service_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
WHERE users.is_deleted =0
AND accounts.is_deleted =0
AND iptraffic_service_links.is_deleted =0
AND ip_groups.is_deleted =0
GROUP BY users.id DESC
Результат выполнения: 1576
После есть кнопка "обновить" на неё повешена процедура:
Код:
procedure Tfm_main.ToolButton11Click(Sender: TObject);
begin
with MyQ do begin
Close;
SQL.Clear;
SQL.Add('SELECT users.id AS uid, users.login, users.password, users.basic_account, FROM_UNIXTIME( users.create_date ) AS ucd , '+
'FROM_UNIXTIME( users.last_change_date ) AS ulcd, accounts.is_blocked, users.full_name, accounts.balance, accounts.credit, '+
'inet_ntoa( ip_groups.ip & 0xffffffff ) AS ip_adress, ip_groups.mac AS mac, users.actual_address, users.work_telephone, users.home_telephone, '+
' users.mobile_telephone, users.icq_number, users.house_id, users.flat_number, users.entrance, users.floor, users.district, users.remote_switch_id, '+
' users.port_number, users.is_deleted, service_links.service_id');
SQL.Add('FROM users');
SQL.Add('INNER JOIN accounts ON accounts.id = users.basic_account');
SQL.Add('INNER JOIN service_links ON service_links.account_id = users.basic_account');
SQL.Add('INNER JOIN iptraffic_service_links ON iptraffic_service_links.id = service_links.id');
SQL.Add('INNER JOIN ip_groups ON ip_groups.ip_group_id = iptraffic_service_links.ip_group_id');
SQL.Add('WHERE users.is_deleted =0');
SQL.Add('AND accounts.is_deleted =0');
SQL.Add('AND iptraffic_service_links.is_deleted =0');
SQL.Add('AND ip_groups.is_deleted =0');
SQL.Add('ORDER BY users.id DESC');
Open;
end;
end;
Результат выполнения: 1633
Вопрос почему разные значения.
Кстати при первом запросе дебликаты не показывается, но установка поля DbGrid в HideDuplicates:=true; - не помогает.
|