![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 '.
Это один из факторов, почему не стоит делать ключевыми строковые поля.