|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
Всем привет. Есть таблица, в которой перечислены балансовые счета: create table bs(bal_s c(4)) INSERT INTO bs values('1000') INSERT INTO bs values('1001') INSERT INTO bs values('1002') INSERT INTO bs values('1003') INSERT INTO bs values('1005') INSERT INTO bs values('1060') INSERT INTO bs values('1072') INSERT INTO bs values('1080') и вторая таблица, где перечислены диапазоны балансовых счетов: create table range_bs(bs1 c(4), bs2 c(4)) INSERT INTO bs values('100','105') INSERT INTO bs values('1070','1073') INSERT INTO bs values('1001','') INSERT INTO bs values('1002','') Задача: из таблицы BS выбрать все счета, которые входят в диапазоны из таблицы RANGE_BS за исключением счетов из таблицы RANGE_BS у которых нет второго значения. Реализовать надо только селектами, желательно одним селектом(или поменьше). Результатом при таких данных была бы выборка: 1000 1003 1005 1072 ЗЫ: сразу извиняюсь, что на выходных может не смогу ответить при необходимости))) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2010, 15:46 |
|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
uZverrrINSERT INTO bs values('100','105')наверное опечатались - тысяча и тысяча пять? Как-то так: Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2010, 18:26 |
|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2010, 18:28 |
|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
Анонимус, а по-моему, ваш вариант выдаст среди прочих и, например, 1002, чего не должно быть. Я не зря нарисовал второй джойн ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.07.2010, 22:41 |
|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
tanglir, Ваш SELECT так и не смог запустить. Зато вариант Анонимус надо дополнить DELETE sel1 FROM range_bs where EMPTY(range_bs.bs2) AND sel1.bal_s==range_bs.bs1 Тогда получаем в точности искомый результат. Корректность применения BETWEEN к строкам сомнительна. BETWEEN('1000','100','105') даст .T. BETWEEN('1000','10','105') даст .T., и т.д. Если такое поведение допустимо, то вперед с песней. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2010, 23:24 |
|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
thunder2tanglir, Ваш SELECT так и не смог запустить.Да это я там понаписал всякой чуши :) Вот рабочий вариант Код: plaintext 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.07.2010, 11:23 |
|
SELECT... FROM SELECT...
|
|||
---|---|---|---|
#18+
tangliruZverrrINSERT INTO bs values('100','105')наверное опечатались - тысяча и тысяча пять? Не опечатка. Именно так - с тремя символами. А может быть и 2 символа и один. Вообще, т.к. все поля строковые, то могут быть и буквы, так что VAL() в селектах недопустим. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2010, 08:38 |
|
|
start [/forum/topic.php?fid=41&fpage=93&tid=1585104]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
37ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 141ms |
0 / 0 |