|
|
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Леди и джентльмены! Подскажите, можно ли объединить два SELECT в одном? Пример: Код: plaintext 1. 2. 3. Идем дальше. Имеется пустая таблица Table1: nIdCod,cFamily,nBorn,cStreet,cKind. Я через APPEND FROM... сливаю по очереди в нее записи из обоих курсоров и работаю с ней. Ясно, что это все не рационально. Подскажите, как правильно сделать выборку, чтобы все сразу уходило в Table1. Благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2006, 16:23 |
|
||
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Только оба запроса должны быть идентичны по возвращаемым колонкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2006, 16:49 |
|
||
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Способы есть разные, но в вашем варианте проще всего использовать UNION Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2006, 16:54 |
|
||
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Я сразу пробовала с UNION, выходила ошибка - это из-за того, что поля разные в запросах, теперь это поняла. Что ж, сейчас попробовала сделать одинаковые поля - один из запросов выходит ерундой. Позвольте задать тогда вопрос по другому. В таблице b1 содержаться записи, связанные с таблицей а1 полем nIdKind. Вот и делаю 2 выборки из a1: записи, которым есть соответствие в b1, и которым нет. Как это сделать одним запросом? Благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2006, 20:03 |
|
||
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Вообще-то, через APPEND FROM не так уж и глупо. Вопрос ведь не в том, чтобы впихнуть все в один запрос, а в том, чтобы если через пару месяцев ты вернулась к той же задаче не надо было бы мучительно разбираться в жутко навороченной конструкции Select-SQL. На скорость это никак не повлияет, поскольку UNION ALL все-равно сначала делает 2 отдельные временные таблицы, а потом их сливает в одну. Просто он сам за собой убирает и еще может отфильтровать дубли. По последнему вопросу. ЛисонькаВ таблице b1 содержаться записи, связанные с таблицей а1 полем nIdKind. Вот и делаю 2 выборки из a1: записи, которым есть соответствие в b1, и которым нет. Как это сделать одним запросом? Если исходить из ЭТОЙ постановки задачи, то достаточно вместо INNER JOIN использовать LEFT JOIN. Код: plaintext 1. 2. 3. 4. Если данные из b1 вообще не нужны, то это просто ВСЕ записи из a1 (!) и b1 тут ни с какого боку. Но ведь в твоем запросе несколько другое условие реализовано. 1. Если записи связны по условию a1.nIdKind=b1.nIdKind, то должно выполняться ЕЩЕ ОДНО условие. Значение поля a1.nIdCod должно встречаться хотя бы в одной записи таблицы b1 2. Если записи НЕ связаны по условию, то значение поля a1.nIdCod НЕ должно встречаться ни в одной записи таблицы b1 Т.е. тут явно 2 РАЗНЫХ запроса. Один на сравнения с текущей записью, а другой на сравнение с любой записью. Если записать условие "в лоб", то получиться примерно так: Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2006, 20:56 |
|
||
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Да, разобралась! Благодарю всех-всех-всех! Прошу прощения за путанный ворос-запрос, разгребаю таблицы из FPD, доставшиеся мне в наследство с требованием немеделнно их реанимировать и запустить в производство. Хотя, думаю, легче бы мне было взяться просто написать БД заново со своими таблицами и перекачать в нее данные из всей этой пыльной рухляди. Еще раз благодарю за помощь. Елизавета Скрунскайте P.S. Так и сделаю, перепишу заново ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2006, 22:55 |
|
||
|
Объединение двух SELECT
|
|||
|---|---|---|---|
|
#18+
Hi Лисонька! Что-то я не понял твоих заросов... Может тебе надо просто через Left Join (а не inner как во второй части запроса) подцепить b1 (по тому-же условию связи) и в качестве последнего столбца написать PADR(NVL(b1.cKind,""), 20) as cKind - где 20 это размер поля cKind. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2006, 01:14 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33506334&tid=1592514]: |
0ms |
get settings: |
9ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
202ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 292ms |
| total: | 601ms |

| 0 / 0 |
