Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.06;
Скачать: CL | DM;

Вниз

Проблема с LIKE   Найти похожие ветки 

 
Германн ©   (2008-01-25 17:50) [0]

Запрос SELECT CARDIDX.ID_CARD, PEOPLE.SURNAME, PEOPLE.Name, PEOPLE.Patronymic,
     ORGANIZATION.Name from CARDIDX, CARD, PEOPLE, ORGANIZATION
      where (CARDIDX.ID_Card = CARD.ID_Card) and (CARD.ID_Pep = PEOPLE.ID_Pep)
      and (PEOPLE.ID_Org = ORGANIZATION.ID_Org) and (CARDIDX.Id_Dev = 2)
      and (CARDIDX.Load_Result like "ERR%") в редакторе SQL IBExpert"а работает нормально. Отбирает нужные записи. Тот же запрос в программе не находит ни одной записи like "ERR%". Ошибок никаких не выдается. Возможно это связано с тем, что в программе TADODataset подключен к базе через ODBC драйвер? Как быть?


 
Palladin ©   (2008-01-25 18:04) [1]

попробуй не % использовать а *


 
Германн ©   (2008-01-25 18:15) [2]


> Palladin ©   (25.01.08 18:04) [1]
>
> попробуй не % использовать а *
>

Пробовал. Получил:
 2.5 Type          : EOleException
 2.6 Message       : [Gemini InterBase ODBC Driver][INTERBASE]Dynamic SQL Error. SQL error code = -104. Token unknown - line 1, char 306. ).


 
Германн ©   (2008-01-25 18:21) [3]


> Германн ©   (25.01.08 18:15) [2]

Не вру. Token unknown - это от другого ошибка. Но с * результат абсолютно такой же как и с %. Возвращает пустой набор.


 
ПостОвый терминатор ©   (2008-01-25 18:36) [4]

Похоже, что здесь необходимо пошаманить с кавычками

> (CARDIDX.Load_Result like "ERR%")

что-то типа

> (CARDIDX.Load_Result like ""ERR%"")

Попробуй, у меня, правда, не IB и не ODBC


 
ПостОвый терминатор ©   (2008-01-25 18:38) [5]

Получилось не очень наглядно. Смысл: поставить пару кавычек слева и пару справа (не двойные кавычки, а именно пару одинарных)


 
Германн ©   (2008-01-25 18:47) [6]


> Смысл: поставить пару кавычек слева и пару справа (не двойные
> кавычки, а именно пару одинарных)

Там так и есть. В смысле в CommandText.


 
Германн ©   (2008-01-25 19:03) [7]

А ларчик просто открывался. В IBExpert"е была открыта база с другого компьютера, в которой строчки like "ERR% были. А в моей базе их таки и не было.
:-)


 
turbouser ©   (2008-01-25 19:06) [8]


> Германн ©   (25.01.08 19:03) [7]

Запрос все-таки неплохо бы переделать. С алиасами и явными join-ами.
Например так:
SELECT
 CX.ID_CARD,
 P.SURNAME,
 P.Name,
 P.Patronymic,
 O.Name
from CARD C
 join CARDIDX CX on CX.ID_Card = C.ID_Card
 join PEOPLE P on P.ID_Pep=C.ID_Pep
 join ORGANIZATION O on O.ID_Org=P.ID_Org
where
 CX.Id_Dev = 2 and
 CX.Load_Result like "ERR%"


 
Johnmen ©   (2008-01-25 19:12) [9]

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


 
Германн ©   (2008-01-25 19:15) [10]


> turbouser ©   (25.01.08 19:06) [8]
>
>
> > Германн ©   (25.01.08 19:03) [7]
>
> Запрос все-таки неплохо бы переделать. С алиасами и явными
> join-ами.
>

Ну join для меня почти высший класс. Про них мне еще читать и читать. Но попробую. А вот в чем преимущество алиасов?


 
Германн ©   (2008-01-25 19:22) [11]


> Johnmen ©   (25.01.08 19:12) [9]
>
> ...причем сначала должны соединяться таблицы, в которых
> меньшее число записей.
>

Учту.


 
turbouser ©   (2008-01-25 19:23) [12]


> Германн ©   (25.01.08 19:15) [10]

http://www.ibase.ru/devinfo/joins.htm
Процитирую :
алиасы таблиц. Без использования алиасов таблиц все версии InterBase (кроме Firebird начиная с 1.0) могут выдать непредсказуемый результат, то есть, перепутать местами столбцы NAME из таблицы товаров и таблицы клиентов. Алиасы позволяют не только избежать этого, но и повышают "переносимость" запроса, а также облегчают понимание, из какой таблицы выбирается какой столбец (даже если в выборке нет одинаковых имен столбцов). В Firebird 2.0 не допускается смешивание алиасов и имен таблиц, не рекомендуется это делать и для других версий InterBase и Firebird.


 
Petr V. Abramov ©   (2008-01-25 19:38) [13]


> Запрос все-таки неплохо бы переделать. С алиасами и явными
> join-ами.

нафига? читать не проще, писать не быстрее, результат тот же.


 
Petr V. Abramov ©   (2008-01-25 19:39) [14]

[13] - это про явные джойны, алиасы, ессно, вещь хорошая.


 
Anatoly Podgoretsky ©   (2008-01-25 20:55) [15]


> Ну join для меня почти высший класс. Про них мне еще читать
> и читать. Но попробую. А вот в чем преимущество алиасов?

Ничего сложного, как раз все просто, да ты и так используешь неявный INNER JOIN

А алиасы дают два преимущества

1. однозначность
2. компактность


 
Германн ©   (2008-01-25 21:51) [16]


> Ничего сложного, как раз все просто, да ты и так используешь
> неявный INNER JOIN
>

Сложного конечно ничего, только надо знать что и как работает. Потому что вот такой запрос три года назад я получил методом ненаучного тыка:
select Rooms.ID_Group, Rooms.NameRoom, Rooms.ID_Rooms,
 Groups.GName, ConfRR.Addr, ConfRR.Reader
from (Rooms left join ConfRR
on (Rooms.ID_Rooms = ConfRR.ID_Rooms))
left join Groups
on (Rooms.ID_Group = Groups.ID_Group)
Group by Rooms.ID_Group, Groups.GName, Rooms.ID_Rooms,
 Rooms.NameRoom, ConfRR.Addr, ConfRR.Reader

Перепробовал при этом всякие сочетания неизвестных мне по сути терминов join, left, outer и т.п. Спроси меня что означает left join и почему именно это сочетание дало нужный мне результат и я отвечу Х.З.


 
turbouser ©   (2008-01-25 22:01) [17]


> Германн ©   (25.01.08 21:51) [16]
>
>
> > Ничего сложного, как раз все просто, да ты и так используешь
> > неявный INNER JOIN
> >
>
> Сложного конечно ничего, только надо знать что и как работает.
>

См. ссылку в [12] - там как раз про джойны. Явные и неявные.


 
Германн ©   (2008-01-25 23:58) [18]


> turbouser ©   (25.01.08 22:01) [17]
>
>

Спасибо за ссылку. Сохранил статью на будущее. Прочитав понял  
> почему именно это сочетание дало нужный мне результат

Век живи, век учись. :)



Страницы: 1 вся ветка

Текущий архив: 2008.07.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
15-1211451464
Mozgan
2008-05-22 14:17
2008.07.06
Компонент OutlookApplication1


6-1190026272
AlexxXes
2007-09-17 14:51
2008.07.06
Нужен ли прокси?


15-1211656945
Джо
2008-05-24 23:22
2008.07.06
Айпи пакостника


2-1213023051
ЙаТ
2008-06-09 18:50
2008.07.06
Свойства файла или папки


2-1212581703
Natandra
2008-06-04 16:15
2008.07.06
Invalid configuration parameter