|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Этот странный 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; - не помогает. |
#2
|
|||
|
|||
а в Delphi как количество строк получаете?
|
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
так прям ничего сказать не могу без самой базы (если есть желание прикрепи dump базы, сейчас посмотрю, если желания нет - жди пока кто нибудь ответит, я без dump'а сказать не могу, я практик, а не теоретик )
Чукча — не читатель, Чукча — писатель )) |
#5
|
|||
|
|||
Цитата:
|
#8
|
|||
|
|||
ну тады zeosdbo попробуй заюзать, сколько лет с ним работаю - не разу проблем не было
|
#9
|
|||
|
|||
Цитата:
Да тут явно проблема в другом. Тебе точно INNER JOIN нужен? Может все-таки LEFT JOIN? |
#10
|
|||
|
|||
Это у тебя в первом запросе с GROUP BY опечатка чтоли?
|
#11
|
||||
|
||||
Так а чего же вы хотели, конечно разные результаты. В первом запросе используется группировка и сортировка результатов, а во втором только сортировка.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
Цитата:
Спасибо большое, просто подсел на дельфи вчера 23 часа сидел, мозг высох. |
#13
|
|||
|
|||
пипец x_O, сколько лет работаю с SQL, и не заметил разницу с ORDER и GROUP
|