Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SQL в BDE [D7, Paradox]


Aybolit ©   (2011-05-17 12:06:00) 

Мне нужно выбрать из таблицы значения по 2 условиям.
Запрос выглядит вот так

SELECT * FROM PRS WHERE
PRS."Код заявки" = 'КЛ01'
AND PRS."Номер" = '123 '

Он ни чего не возвращает. Но!!! если делать так
SELECT * FROM PRS WHERE
PRS."Номер" = '123 '

и вот так

SELECT * FROM PRS WHERE
PRS."Код заявки" = 'КЛ01'

то в обоих случаях требуемая мне запись присутствует в возвращаемых запросом записях Решил извратиться и сделать так

select *
from "1.sql" as t
where
t."Номер" = '123 '

в 1.sql записал
SELECT * FROM PRS WHERE
PRS."Код склада" = 'КЛ01'

и о чудо работает! Сделал через файл потому, что не BDE не понимает такое

select *
from (
SELECT * FROM PRS WHERE
PRS."Код склада" = 'КЛ01'
) as t
where
t."Номер" = '123 '

Так вот! почему так?! Все бы худо бедно сошло, но мне нужно выполнить "DELETE FROM". Запросы с двумя условиями и более, с другими столбцами работают нормально, без извращений.
Уточнения: имена столбцов написаны на кириллице и с еще одним полем являются составным ключом. Парадокс версии 4


sniknik   (2011-05-18 09:54:00) [1]

> что БДЕ не нормально работает с пробелами в конце
также как MSSQL например если поле типа char, с varchar по другому, но вот проблема в BDE Paradox нет varchar...

другие базы/движки работают с char (из известных мне Accecc, FB, Informix, Foxpro (то что уже базой а не файлами)) также аналогично.

т.что поменяй у себя представление о "нормальности".


Anatoly Podgoretsky   (2011-05-18 09:42:00) [2]

> Aybolit  (18.05.2011 09:36:17)  [17]

Нормально БДЕ работает с пробелами в конце, это просто тебе не нравится, у
тебя другие предположения о правильности, но они неправильные.


Aybolit   (2011-05-18 09:36:00) [3]

Ega23 ©   (18.05.11 08:17) [15]
Я прекрасно понимаю что это "жуткие" действия
Я же так делал из за того, что БДЕ не нормально работает с пробелами в конце

Германн ©   (18.05.11 01:48) [14]

> Такие, имхо, никто не знает как делать. Ибо они не соответствуют
> формату языка SQL.
> Ну а вложенные запросы соответствующие языку SQL BDE нормально
> поддерживает (по крайней мере на уровне LocalSQL).

Как выяснилось вложенные запросы в From не поддерживаются в БДЕ(В стандарте ИСО они есть!). А в Where пожалуйста используй сколько хочешь.


Anatoly Podgoretsky   (2011-05-18 08:52:00) [4]

> Ega23  (18.05.2011 08:17:15)  [15]

Формату LocalSQL не соответствует, его можно выполнить только через указаный
трюк. Эмуляция VIEW


Ega23   (2011-05-18 08:17:00) [5]


> Такие, имхо, никто не знает как делать. Ибо они не соответствуют
> формату языка SQL.


Ну ваще-то (строго говоря) - соответствуют. Но такой запрос - да, всё равно, что ковырять в носу ногой через задницу.


Германн   (2011-05-18 01:48:00) [6]


> А кто нибудь знает как делать вложенные запросы без применения
> файлов?
>

Какие?
Такие вот как у тебя в [0]?

>
> select *
> from (
> SELECT * FROM PRS WHERE
> PRS."Код склада" = 'КЛ01'
> ) as t
> where
> t."Номер" = '123 '
>

Такие, имхо, никто не знает как делать. Ибо они не соответствуют формату языка SQL.
Ну а вложенные запросы соответствующие языку SQL BDE нормально поддерживает (по крайней мере на уровне LocalSQL).


> Anatoly Podgoretsky ©   (17.05.11 14:53) [8]
>
> Наш человек, партнер, а не халявщик.
>

Троешник он, а не партнер.


Ega23   (2011-05-17 17:41:00) [7]


>  Странно как-то, подозреваю БДЕ.

Напрасно.


Aybolit   (2011-05-17 17:07:00) [8]

я уж примерно данные приводил там в базе они с пробелами хранятся.
тоесть все как надо. дело было в том что когда я сравнивал допустим Имя='Коля  '(пробелы в конце)  и допустим еще одно условие Айди = 1 в этом случае он не возвращал значения. Если же использовать  в where  Имя='Коля  ', то все работает. Пришлось отказаться от пробелов. Странно как-то, подозреваю БДЕ.
А кто нибудь знает как делать вложенные запросы без применения файлов?


Anatoly Podgoretsky   (2011-05-17 16:43:00) [9]

> Ega23  (17.05.2011 15:43:10)  [10]

Вот я и говорю, что он партнер.


Ega23   (2011-05-17 15:43:00) [10]


> Кстати по приведеным данным выборка вернет 0 строк, поскольку
> в первом поле данные с двумя пробелами в начале.


Он проблему решил.


Anatoly Podgoretsky   (2011-05-17 14:54:00) [11]

Кстати по приведеным данным выборка вернет 0 строк, поскольку в первом поле данные с двумя пробелами в начале.


Anatoly Podgoretsky   (2011-05-17 14:53:00) [12]

Наш человек, партнер, а не халявщик.


Aybolit   (2011-05-17 14:26:00) [13]

КОд склада Номер
  СЦ01        123

что тут показывать то

проблему решил


Anatoly Podgoretsky   (2011-05-17 13:25:00) [14]

> Aybolit  (17.05.2011 13:03:03)  [3]

Значит категорически отказываешься показывать данные записи, ну дело твое.


Aybolit   (2011-05-17 13:15:00) [15]

заменил равно на like работает. но в чем разница % я в лайк не добавлял


Aybolit   (2011-05-17 13:04:00) [16]

на названия полей не смотрите это я тут законспирировать хотел да забыл)


Aybolit   (2011-05-17 13:03:00) [17]

Ega23
на счет символов. Там все нормально я запрос писал в SQL explorer'е '123' писал вручную.

Anatoly Podgoretsky
Там одна запись, просто выбирается по вум столюцам.

>  Но!!! если делать так
> SELECT * FROM PRS WHERE
> PRS."Номер" = '123 '
>
> и вот так
>
> SELECT * FROM PRS WHERE
> PRS."Код заявки" = 'КЛ01'
>
> то в обоих случаях требуемая мне запись присутствует в возвращаемых
> запросом записях

так же работает


Anatoly Podgoretsky   (2011-05-17 12:29:00) [18]

> Aybolit  (17.05.2011 12:06:00)  [0]

Наверно нет таких записей где оба поля присутствуют одновременно.
Приведи пример данных


Ega23   (2011-05-17 12:27:00) [19]


> то в обоих случаях требуемая мне запись присутствует в возвращаемых
> запросом записях

Ты в этом уверен?
Дело в том, что помимо видимых символов '123' в строке могут невидимые присутствовать. Например, #5. Штук так 100. И строка '123'#5#5#5#5#5#5 совсем не равна строке '123'. А строка '123' не равно строке '123 '.
Это один из факторов, почему не стоит делать ключевыми строковые поля.


Наверх

Титульная страница Поиск, карта сайта Написать письмо