
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
20.05.2003, 15:34:59
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#18+
Задача: выполнить один из INSERT'ов, в зависимости от того, что вернет некий SELECT. Как это можно реализовать в Oracle ? Спасибо. Очень начинающий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 15:56:37
|
|||
|---|---|---|---|
Условия в запросе.... |
|||
|
#18+
insert into <таблица> select ....... и пошло. Вобщем пишешь запрос так что-бы он тебе возвращал то что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 15:56:37
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#18+
Да, читай доку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 16:05:41
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#18+
В зависимости от результата SELECT может и не нужно будет делать INSERT. Ближе к жизни задача выглядит так: В таблицу нужно добавить новую запись, только в том случае, если там такой записи нет. (структуру таблицы изменить нельзя). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 16:15:07
|
|||
|---|---|---|---|
Условия в запросе.... |
|||
|
#18+
Если 9i то там есть команда merge (см. доку) Если ниже, я думаю чистым SQL здесь не обойтись. Хотя и insert into тоже можно использовать если есть PK. В этом случае, если запись есть он просто ругнётся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 16:15:08
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#18+
... можно ли в запросе "разветвлять" процесс с помошью какой-нибудь конструкции типа IF для решения ОПИСАННОЙ задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 16:22:25
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#18+
Можешь попробовать отчесь те записи, которые уже есть, наподобе: Код: plaintext 1. 2. 3. 4. 5. 6. А сформулировать задачу ИМХО можно поконкретнее. Я, к примеру, подумал, что в одни записи надо вставлять в одну таблицу, а другие - в другую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 16:23:18
|
|||
|---|---|---|---|
Условия в запросе.... |
|||
|
#18+
2 D8: >В таблицу нужно добавить новую запись, только в том случае, если там >такой записи нет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. SY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
20.05.2003, 17:44:09
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#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:51:52
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#18+
Создай ограничение уникальности и немного измени запрос на добавление записи: Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
21.05.2003, 10:51:22
|
|||
|---|---|---|---|
|
|||
Условия в запросе.... |
|||
|
#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:59:35
|
|||
|---|---|---|---|
Условия в запросе.... |
|||
|
#18+
to D8: Ты выбрал не самый лучший способ. Зачем тебе производить такую дорогостоющую операцию: "SELECT DISTINCT 'Field1_Value', 'Field2_Value' FROM tabl " только для того что-бы вернуть нужные значения. Тебе же SY показал как сделать: Код: plaintext 1. 2. 3. 4. 5. Чуешь разницу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&tablet=1&tid=1990438]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
184ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 195ms |
| total: | 474ms |

| 0 / 0 |
