Конференция "Базы" » SQL в BDE [D7, Paradox]
 
  • Aybolit (17.05.11 12:06) [0]
    Мне нужно выбрать из таблицы значения по 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
  • Ega23 © (17.05.11 12:27) [1]

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

    Ты в этом уверен?
    Дело в том, что помимо видимых символов '123' в строке могут невидимые присутствовать. Например, #5. Штук так 100. И строка '123'#5#5#5#5#5#5 совсем не равна строке '123'. А строка '123' не равно строке '123 '.
    Это один из факторов, почему не стоит делать ключевыми строковые поля.
  • Anatoly Podgoretsky © (17.05.11 12:29) [2]
    > Aybolit  (17.05.2011 12:06:00)  [0]

    Наверно нет таких записей где оба поля присутствуют одновременно.
    Приведи пример данных
  • Aybolit (17.05.11 13:03) [3]
    Ega23
    на счет символов. Там все нормально я запрос писал в SQL explorer'е '123' писал вручную.

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

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

    так же работает
  • Aybolit (17.05.11 13:04) [4]
    на названия полей не смотрите это я тут законспирировать хотел да забыл)
  • Aybolit (17.05.11 13:15) [5]
    заменил равно на like работает. но в чем разница % я в лайк не добавлял
  • Anatoly Podgoretsky © (17.05.11 13:25) [6]
    > Aybolit  (17.05.2011 13:03:03)  [3]

    Значит категорически отказываешься показывать данные записи, ну дело твое.
  • Aybolit (17.05.11 14:26) [7]
    КОд склада Номер
      СЦ01        123

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

    проблему решил
  • Anatoly Podgoretsky © (17.05.11 14:53) [8]
    Наш человек, партнер, а не халявщик.
  • Anatoly Podgoretsky © (17.05.11 14:54) [9]
    Кстати по приведеным данным выборка вернет 0 строк, поскольку в первом поле данные с двумя пробелами в начале.
  • Ega23 © (17.05.11 15:43) [10]

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


    Он проблему решил.
  • Anatoly Podgoretsky © (17.05.11 16:43) [11]
    > Ega23  (17.05.2011 15:43:10)  [10]

    Вот я и говорю, что он партнер.
  • Aybolit (17.05.11 17:07) [12]
    я уж примерно данные приводил там в базе они с пробелами хранятся.
    тоесть все как надо. дело было в том что когда я сравнивал допустим Имя='Коля  '(пробелы в конце)  и допустим еще одно условие Айди = 1 в этом случае он не возвращал значения. Если же использовать  в where  Имя='Коля  ', то все работает. Пришлось отказаться от пробелов. Странно как-то, подозреваю БДЕ.
    А кто нибудь знает как делать вложенные запросы без применения файлов?
  • Ega23 © (17.05.11 17:41) [13]

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

    Напрасно.
  • Германн © (18.05.11 01:48) [14]

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

    Какие?
    Такие вот как у тебя в [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 © (18.05.11 08:17) [15]

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


    Ну ваще-то (строго говоря) - соответствуют. Но такой запрос - да, всё равно, что ковырять в носу ногой через задницу.
  • Anatoly Podgoretsky © (18.05.11 08:52) [16]
    > Ega23  (18.05.2011 08:17:15)  [15]

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

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

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

    Как выяснилось вложенные запросы в From не поддерживаются в БДЕ(В стандарте ИСО они есть!). А в Where пожалуйста используй сколько хочешь.
  • Anatoly Podgoretsky © (18.05.11 09:42) [18]
    > Aybolit  (18.05.2011 09:36:17)  [17]

    Нормально БДЕ работает с пробелами в конце, это просто тебе не нравится, у
    тебя другие предположения о правильности, но они неправильные.
  • sniknik © (18.05.11 09:54) [19]
    > что БДЕ не нормально работает с пробелами в конце
    также как MSSQL например если поле типа char, с varchar по другому, но вот проблема в BDE Paradox нет varchar...

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

    т.что поменяй у себя представление о "нормальности".
 
Конференция "Базы" » SQL в BDE [D7, Paradox]
Есть новые Нет новых   [134431   +13][b:0][p:0.001]