| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Базы данных и репортинг > Зависание SQL запроса. |
| Автор: voice 16.4.2004, 10:51 | ||||
| При выполнени простенького запроса, тупо зависает все.... таблицы 'second.db' 'first.db' сам запрос.
а вот так нормально работает.
в чем грабли? (в MySQL все шуршит аж бегом). |
| Автор: x77 16.4.2004, 13:34 |
| voice, насколько я помню, бде трактует токены в двойных кавычках, как имена полей. попробуй заменить на одинарные. а ещё лучше - сделай запрос параметризированным, это, в принципе, более грамотный вариант. |
| Автор: voice 16.4.2004, 14:00 | ||
есвенно, вариантов я перепробовал кучу, в том числе и кавычки менял и убирал. хех, не помогает А параметризированный запрос, у меня изначально использовался, это я уже для отладки цифры подставил, ну чтоб более понятно было. |
| Автор: x77 16.4.2004, 14:23 |
| мне вот это строка непонятна: ... from first.db as fl. я всегда пишу first.db fl left join second.db sl on ..., и всё работает. без as, короче. не пробовал? |
| Автор: Maverick 16.4.2004, 15:15 |
| Есть такая функция function QuotedStr(const S: string): string; Description Use QuotedStr to convert the string S to a quoted string. A single quote character (') is inserted at the beginning and end of S, and each single quote character in the string is repeated. Очень удобно... и не надо задумыватся над количеством ковычек... |
| Автор: voice 16.4.2004, 15:23 | ||||
дык и у меня работает, вот, токо добавляю and s1.data='03.20.2004' и все висим. еслибы неправильно формат, дата задал или сравнивал дату со стрингом, оно вернуло бы null или ругнулось, ИХМО. (попробую без "as", сомневаюсь что картина изменится.) Добавлено @ 15:28
Спасибо за подсказку! |
| Автор: voice 19.4.2004, 09:38 |
| переделал немного, запрос, заработал. в исходном варианте не работает. (так работает.) Add(' SELECT s1.name, s1.data '+ ' FROM ' + seconddb + ' as s1 '+ ' where s1.data=' '03.20.2004' ' '); ничего, не понимаю. |
| Автор: x77 19.4.2004, 09:51 |
| ну правильно, у тебя сейчас одинарные кавычки вместо двойных, о чём сразу и шла речь. |
| Автор: voice 19.4.2004, 10:50 |
| да, на счет кавычек, в первом примере, я просто слоховал, но дело не в этом... Add(' SELECT f1.name, s1.Klan, s1.Rating as d1 '+ ' FROM ' + firstdb + ' as f1 '+ ' Left Join ' + seconddb + ' as s1 on '+ ' f1.wab_name=s1.wab_name '+ ' and s1.Data=' '20.03.2004' ' '); так тоже не работает, тупо висит. |
| Автор: x77 19.4.2004, 11:39 | ||
а зачем ты включаешь в on условие по значению поля? его логичнее вынести в where. я понимаю, f1.wab_name = s1.wab_name, а при чём там дата, в джойне? по имени - оставь, а дату вынеси:
всё должно работать, имхо. |