Главная страница
    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.49 MB
Время: 0.033 c
2-1213004276
n_sch
2008-06-09 13:37
2008.07.06
Загрузка данных в DBF из текстового файла


3-1201365475
leonidus
2008-01-26 19:37
2008.07.06
Ищу простую СУБД


3-1201592329
NNH
2008-01-29 10:38
2008.07.06
Печать ф. А3 двуми листами А4


15-1211457004
Дмитрий С
2008-05-22 15:50
2008.07.06
На каком это языке?


2-1212753119
Инна
2008-06-06 15:51
2008.07.06
отображение в РичЕдите хтмл-страницы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский