Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.09.28;
Скачать: [xml.tar.bz2];

Вниз

Почему не правильно работает такой запрос?   Найти похожие ветки 

 
Tornado ©   (2008-03-28 14:30) [0]

with DM.mdQueryP do begin
      Close;
      SQL.Clear;
      SQL.Add("SELECT * FROM vtg_sr WHERE PR=:PR UNION ALL     SELECT * FROM Arz_sr WHERE PR=:PR");
      Parameters.ParamByName("PR").Value := "РУКОВОДСТВО";
      Active := True;
 end;

Делаю выборку из двух тоблиц с объединением, выбират почему то только из первой таблицы (vtg_sr)? а из таблицы Arz_sr  - не выбирает...в чем может быть дело?


 
Tornado ©   (2008-03-28 14:31) [1]

И там и там в таблицах есть значение "РУКОВОДСТВО" в столбце PR


 
Sergey13 ©   (2008-03-28 14:52) [2]

А просто из второй таблицы (типа выбросить первую часть запроса) выбирает?


 
Tornado ©   (2008-03-28 14:54) [3]

>> Sergey13 ©   (28.03.08 14:52) [2]

Без проблем выбирает если так написать: (без UNION ALL)

SQL.Add("SELECT * FROM Arz_LPUMG_sr WHERE PR=:PR");


 
Tornado ©   (2008-03-28 14:55) [4]

Таблицы одинаковые абсолютно по структуре


 
Tornado ©   (2008-03-28 14:59) [5]

Кстати попробовал написать так:

SELECT * FROm Vtg_sr WHERE PR=""РУКОВОДСТВО"" UNION ALL SELECT * FROM Arz_sr WHERE PR=""РУКОВОДСТВО""

Так работает нормально, как надо ... Хм, странно. Но мне надо с параметрами...


 
Павел Калугин ©   (2008-03-28 15:00) [6]

SQL.Add("SELECT * FROM vtg_sr WHERE PR=:PR1 UNION ALL     SELECT * FROM Arz_sr WHERE PR=:PR2");
     Parameters.ParamByName("PR1").Value := "РУКОВОДСТВО";
     Parameters.ParamByName("PR2").Value := "РУКОВОДСТВО";


 
Sergey13 ©   (2008-03-28 15:01) [7]

> [5] Tornado ©   (28.03.08 14:59)

Попробуй с двумя параметрами.
"SELECT * FROM vtg_sr WHERE PR=:PR1 UNION ALL     SELECT * FROM Arz_sr WHERE PR=:PR2"

Инога встречаются такие проблемы


 
Павел Калугин ©   (2008-03-28 15:02) [8]

а вначале запрос после подстановки выглядит как
SELECT * FROM vtg_sr WHERE PR="РУКОВОДСТВО" UNION ALL     SELECT * FROM Arz_sr WHERE PR=NULL
ибо в нем 2 параметра. Странно что сообщения об ошибке не было


 
Tornado ©   (2008-03-28 15:07) [9]

Павел Калугин ©   (28.03.08 15:00) [6]

Да, так работает, всем спасибо!


 
Правильный_Вася   (2008-03-28 15:22) [10]


>  Странно что сообщения об ошибке не было

чего странного?
NULL - вполне легальное значение


 
Sergey13 ©   (2008-03-28 15:25) [11]

> [4] Tornado ©   (28.03.08 14:55)
> Таблицы одинаковые абсолютно по структуре

Значит таблица должна быть одна. 8-)


 
Tornado ©   (2008-03-28 15:40) [12]

Sergey13 ©   (28.03.08 15:25) [11]

Все правильно говоришь, но так нужно чтобы эти данные физически содержались в разных таблицах :)


 
sniknik ©   (2008-03-28 16:33) [13]

> нужно чтобы эти данные физически содержались в разных таблицах :)
все обман... (вернее само...) данные "физически" в разных таблицах, находятся в одном файле базы... т.е. деление на таблицы чисто логикой движка обеспечивается... (т.е. сделал структуру такую чтобы тебе их предоставляли как две, чтобы было понеудобнее запросы выполнять... мазохизм какойто)


 
Павел Калугин ©   (2008-03-28 17:44) [14]


> Правильный_Вася   (28.03.08 15:22) [10]

но 2 параметра с одним именем уже не совсем легально:)


 
sniknik ©   (2008-03-28 17:55) [15]

> но 2 параметра с одним именем уже не совсем легально:)
зависит от способа доступа, вот был бы у него BDE... (насколько помню там позволялись одноименные)

в принципе и тут можно если не по имени а по индексу значения присваивать.


 
Правильный_Вася   (2008-03-28 18:08) [16]


>  вот был бы у него BDE... (насколько помню там позволялись
> одноименные)

ЕМНИП, там тоже обращение было только к первому из одноименных, остальные игнорировались
хотя могу врать, давно уже не делаю одноименных


 
Павел Калугин ©   (2008-03-28 18:10) [17]


> sniknik ©   (28.03.08 17:55) [15]

Так и  мне кажется что там индекс первичен а byName вторично.


 
sniknik ©   (2008-03-28 20:20) [18]

> там тоже обращение было только к первому из одноименных, остальные игнорировались
там может и были обращения только к первому но сам движок тогда разбирал остальные (поддержка любителей одноименных параметров?)

простая проверка BDE
код для чтения из таблици с ID и существующим значением 1  
Query1.SQL.Text:= "SELECT ID, :ID AS ID2 FROM Table1 WHERE ID=:ID";
Query1.ParamByName("ID").AsInteger:= 1;
Query1.Open;

результат из 2х еденичек
ID ID2
1   1
видно что разовое присваивание инициировало оба параметра. как, на каом этапе неважно.
если бы инициировался только первый, условие бы не сработало.



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.09.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.056 c
1-1196769878
TIF
2007-12-04 15:04
2008.09.28
DPI и решение проблем, возникающих с ним


2-1218330125
aaaaa
2008-08-10 05:02
2008.09.28
Drag&Drop


2-1219062308
Сталкер
2008-08-18 16:25
2008.09.28
Выбор из справочника


2-1218574646
ProgRAMmer Dimonych
2008-08-13 00:57
2008.09.28
Создание монохромного битмапа на WinAPI


2-1218898310
Павлик
2008-08-16 18:51
2008.09.28
Поиск записей





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский