-
Мне нужно выбрать из таблицы значения по 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
-
> то в обоих случаях требуемая мне запись присутствует в возвращаемых
> запросом записях
Ты в этом уверен?
Дело в том, что помимо видимых символов '123' в строке могут невидимые присутствовать. Например, #5. Штук так 100. И строка '123'#5#5#5#5#5#5 совсем не равна строке '123'. А строка '123' не равно строке '123 '.
Это один из факторов, почему не стоит делать ключевыми строковые поля.
-
> Aybolit (17.05.2011 12:06:00) [0]
Наверно нет таких записей где оба поля присутствуют одновременно.
Приведи пример данных
-
Ega23
на счет символов. Там все нормально я запрос писал в SQL explorer'е '123' писал вручную.
Anatoly Podgoretsky
Там одна запись, просто выбирается по вум столюцам.
> Но!!! если делать так
> SELECT * FROM PRS WHERE
> PRS."Номер" = '123 '
>
> и вот так
>
> SELECT * FROM PRS WHERE
> PRS."Код заявки" = 'КЛ01'
>
> то в обоих случаях требуемая мне запись присутствует в возвращаемых
> запросом записях
так же работает
-
на названия полей не смотрите это я тут законспирировать хотел да забыл)
-
заменил равно на like работает. но в чем разница % я в лайк не добавлял
-
> Aybolit (17.05.2011 13:03:03) [3]
Значит категорически отказываешься показывать данные записи, ну дело твое.
-
КОд склада Номер
СЦ01 123
что тут показывать то
проблему решил
-
Наш человек, партнер, а не халявщик.
-
Кстати по приведеным данным выборка вернет 0 строк, поскольку в первом поле данные с двумя пробелами в начале.
-
> Кстати по приведеным данным выборка вернет 0 строк, поскольку
> в первом поле данные с двумя пробелами в начале.
Он проблему решил.
-
> Ega23 (17.05.2011 15:43:10) [10]
Вот я и говорю, что он партнер.
-
я уж примерно данные приводил там в базе они с пробелами хранятся.
тоесть все как надо. дело было в том что когда я сравнивал допустим Имя='Коля '(пробелы в конце) и допустим еще одно условие Айди = 1 в этом случае он не возвращал значения. Если же использовать в where Имя='Коля ', то все работает. Пришлось отказаться от пробелов. Странно как-то, подозреваю БДЕ.
А кто нибудь знает как делать вложенные запросы без применения файлов?
-
> Странно как-то, подозреваю БДЕ.
Напрасно.
-
> А кто нибудь знает как делать вложенные запросы без применения
> файлов?
>
Какие?
Такие вот как у тебя в [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]
>
> Наш человек, партнер, а не халявщик.
>
Троешник он, а не партнер.
-
> Такие, имхо, никто не знает как делать. Ибо они не соответствуют
> формату языка SQL.
Ну ваще-то (строго говоря) - соответствуют. Но такой запрос - да, всё равно, что ковырять в носу ногой через задницу.
-
> Ega23 (18.05.2011 08:17:15) [15]
Формату LocalSQL не соответствует, его можно выполнить только через указаный
трюк. Эмуляция VIEW
-
Ega23 © (18.05.11 08:17) [15]
Я прекрасно понимаю что это "жуткие" действия
Я же так делал из за того, что БДЕ не нормально работает с пробелами в конце
Германн © (18.05.11 01:48) [14]
> Такие, имхо, никто не знает как делать. Ибо они не соответствуют
> формату языка SQL.
> Ну а вложенные запросы соответствующие языку SQL BDE нормально
> поддерживает (по крайней мере на уровне LocalSQL).
Как выяснилось вложенные запросы в From не поддерживаются в БДЕ(В стандарте ИСО они есть!). А в Where пожалуйста используй сколько хочешь.
-
> Aybolit (18.05.2011 09:36:17) [17]
Нормально БДЕ работает с пробелами в конце, это просто тебе не нравится, у
тебя другие предположения о правильности, но они неправильные.
-
> что БДЕ не нормально работает с пробелами в конце
также как MSSQL например если поле типа char, с varchar по другому, но вот проблема в BDE Paradox нет varchar...
другие базы/движки работают с char (из известных мне Accecc, FB, Informix, Foxpro (то что уже базой а не файлами)) также аналогично.
т.что поменяй у себя представление о "нормальности".