Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Зависание SQL запроса. 
:(
    Опции темы
voice
Дата 16.4.2004, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.4.2004

Репутация: нет
Всего: нет



При выполнени простенького запроса, тупо зависает все....
таблицы 'second.db' 'first.db'
сам запрос.

Код
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' " ' ');



а вот так нормально работает.
Код
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 ');


в чем грабли?
(в MySQL все шуршит аж бегом).

PM MAIL   Вверх
x77
Дата 16.4.2004, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



voice, насколько я помню, бде трактует токены в двойных кавычках, как имена полей. попробуй заменить на одинарные. а ещё лучше - сделай запрос параметризированным, это, в принципе, более грамотный вариант.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
voice
Дата 16.4.2004, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.4.2004

Репутация: нет
Всего: нет



Цитата(x77 @ 16.4.2004, 13:34)
voice, насколько я помню, бде трактует токены в двойных кавычках, как имена полей. попробуй заменить на одинарные. а ещё лучше - сделай запрос параметризированным, это, в принципе, более грамотный вариант.

есвенно, вариантов я перепробовал кучу, в том числе и кавычки менял и убирал.
хех, не помогает sad.gif
А параметризированный запрос, у меня изначально использовался, это я уже для отладки
цифры подставил, ну чтоб более понятно было.

Это сообщение отредактировал(а) voice - 16.4.2004, 14:04
PM MAIL   Вверх
x77
Дата 16.4.2004, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



мне вот это строка непонятна: ... from first.db as fl. я всегда пишу first.db fl left join second.db sl on ..., и всё работает. без as, короче. не пробовал?


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Maverick
Дата 16.4.2004, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1307
Регистрация: 22.9.2003
Где: Odessa, Ukraine

Репутация: нет
Всего: 10



Есть такая функция

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.

Очень удобно... и не надо задумыватся над количеством ковычек...


--------------------
smile
PM ICQ GTalk   Вверх
voice
Дата 16.4.2004, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.4.2004

Репутация: нет
Всего: нет



Цитата(x77 @ 16.4.2004, 14:23)
мне вот это строка непонятна: ... from first.db as fl. я всегда пишу first.db fl left join second.db sl on ..., и всё работает. без as, короче. не пробовал?

дык и у меня работает, вот,
токо добавляю and s1.data='03.20.2004'
и все висим.
еслибы неправильно формат, дата задал или сравнивал дату со стрингом,
оно вернуло бы null или ругнулось, ИХМО.
(попробую без "as", сомневаюсь что картина изменится.)

Добавлено @ 15:28
Цитата(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.

Очень удобно... и не надо задумыватся над количеством ковычек...

Спасибо за подсказку!
PM MAIL   Вверх
voice
Дата 19.4.2004, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.4.2004

Репутация: нет
Всего: нет



переделал немного, запрос, заработал.
в исходном варианте не работает. sad.gif

(так работает.)
Add(' SELECT s1.name, s1.data '+
' FROM ' + seconddb + ' as s1 '+
' where s1.data=' '03.20.2004' ' ');

ничего, не понимаю.

Это сообщение отредактировал(а) voice - 19.4.2004, 09:45
PM MAIL   Вверх
x77
Дата 19.4.2004, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



ну правильно, у тебя сейчас одинарные кавычки вместо двойных, о чём сразу и шла речь.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
voice
Дата 19.4.2004, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 16.4.2004

Репутация: нет
Всего: нет



да, на счет кавычек, в первом примере, я просто слоховал,
но дело не в этом...

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' ' ');

так тоже не работает, тупо висит.
PM MAIL   Вверх
x77
Дата 19.4.2004, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 1
Всего: 22



а зачем ты включаешь в on условие по значению поля? его логичнее вынести в where. я понимаю, f1.wab_name = s1.wab_name, а при чём там дата, в джойне? по имени - оставь, а дату вынеси:

Код

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 '+
 ' where s1.Data=' '20.03.2004' ' ');


всё должно работать, имхо.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0544 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.