|
|
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Задача: выполнить один из INSERT'ов, в зависимости от того, что вернет некий SELECT. Как это можно реализовать в Oracle ? Спасибо. Очень начинающий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 15:34 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
insert into <таблица> select ....... и пошло. Вобщем пишешь запрос так что-бы он тебе возвращал то что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 15:56 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Да, читай доку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 15:56 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
В зависимости от результата SELECT может и не нужно будет делать INSERT. Ближе к жизни задача выглядит так: В таблицу нужно добавить новую запись, только в том случае, если там такой записи нет. (структуру таблицы изменить нельзя). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 16:05 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Если 9i то там есть команда merge (см. доку) Если ниже, я думаю чистым SQL здесь не обойтись. Хотя и insert into тоже можно использовать если есть PK. В этом случае, если запись есть он просто ругнётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 16:15 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
... можно ли в запросе "разветвлять" процесс с помошью какой-нибудь конструкции типа IF для решения ОПИСАННОЙ задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 16:15 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Можешь попробовать отчесь те записи, которые уже есть, наподобе: Код: plaintext 1. 2. 3. 4. 5. 6. А сформулировать задачу ИМХО можно поконкретнее. Я, к примеру, подумал, что в одни записи надо вставлять в одну таблицу, а другие - в другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 16:22 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
2 D8: >В таблицу нужно добавить новую запись, только в том случае, если там >такой записи нет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. SY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 16:23 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Спасибо. Да, догадок по поводу неоговоренных условий много.... извините. Вот как все на самом деле: Oracle 8i. Сам запрос формируется другой программой и выполняется с помощью sqlplus user/passwd @file Значения полей, в заполняемой записи формируются программой. Например такие строки я пишу из программы в указанный file: INSERT INTO tabl (Field1_Name, Field2_Name) VALUES ('Field1_Value', 'Field2_Value'); commit; exit; Другими словами, добавляемых данных нет в других таблицах (создать временную, возможно, и нельзя, но может и получиться - попробую). И вот сама проблемка: вышеуказанный INSERT нужно выполнять только если в таблице tabl нет записей, с Field2_Name='Field2_Value'. Primary Key не поможет, так как принимать решение о добавлении нужно на основе не ключевых полей, PK инкрементируется при добавлении новых записей. Вот я и не знаю: 1. Можно ли в запросах использовать IF (и где вообще допустим IF); 2. Возможно ли обойтись запросом или нужно что-то похитрее; 3. Какую тему в доках читать в первую очередь (в свете решения указанной проблемы). Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 17:44 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Создай ограничение уникальности и немного измени запрос на добавление записи: Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2003, 17:51 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
Спасибо всем за помощь ! Сделал так: INSERT INTO tabl (Field1_Name, Field2_Name) SELECT DISTINCT 'Field1_Value', 'Field2_Value' FROM tabl WHERE NOT EXISTS (SELECT Field2_Name FROM tabl WHERE Field2_Name='Field2_Value'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 10:51 |
|
||
|
Условия в запросе....
|
|||
|---|---|---|---|
|
#18+
to D8: Ты выбрал не самый лучший способ. Зачем тебе производить такую дорогостоющую операцию: "SELECT DISTINCT 'Field1_Value', 'Field2_Value' FROM tabl " только для того что-бы вернуть нужные значения. Тебе же SY показал как сделать: Код: plaintext 1. 2. 3. 4. 5. Чуешь разницу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2003, 10:59 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32164340&tid=1990438]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
178ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 520ms |

| 0 / 0 |
