|
ADOCommand MS OLE DB for Foxpro странное поведение запроса
|
|||
---|---|---|---|
#18+
Всем привет. Нубский вопрос пишу в ADOcommand (Delphi) следующий код: UPDATE table1 SET table1.pole4 = 1 WHERE EXISTS (SELECT * FROM out WHERE table1.pole1 = table1.pole1 AND table1.pole2 = table2.pole2 AND table1.pole3 = table2.pole3) Суть: Заменить в table1 pole4 на 1, в тех случаях где оно совпадает по 3 полям с таблицей 2. В Foxpro работает. Через провайдер и ADOCommand же запрос проставляет значение 1 во все поля в таблице 1 Может кто сталкивался с подобным? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 19:51 |
|
ADOCommand MS OLE DB for Foxpro странное поведение запроса
|
|||
---|---|---|---|
#18+
Вызывает подозрение звездочка. Попробуй заменить ее на константу. Например, просто число 1. Ну, и то, что у тебя условие по pole1 написано с одной и той же таблицей. Это опечатка или так оно и есть? WHERE table1 .pole1 = table1 .pole1 Также запрос можно переписать следующим образом Код: plaintext 1. 2. 3. 4. 5.
Т.е. заменив Exists() на прямое соединение. Следует заметить, что в подобном синтаксисе из таблицы out будут отбираться только "первые попавшиеся" записи удовлетворяющие условию объединения. Т.е. если условию объединения соответствует несколько записей подчиненной таблицы, то использоваться будет только одна из них. Первая попавшаяся. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2010, 20:11 |
|
|
start [/forum/topic.php?fid=41&fpage=90&tid=1584964]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
103ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 198ms |
0 / 0 |