|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Добрый день. Не могу сообразить, как мне получить выборку нужных данных. Имеется две таблицы xsub и dsub, полученные на предыдущем этапе выборки. Их можно свести в одну с признаком принадлежности, если это упростит решение. Требуется получить таблицу с записями из трех полей. Первое поле - cell. Это должно быть full join соответствующих полей этих таблиц. Это значение в дальнейшем (или сразу) будет заменено на поле cellname из специальной таблицы listcell, которая имеет список всех возможных значений cell. Второе поле - количество imsi из таблицы dsub для каждого значения cell. Третье поле - количество imsi из таблицы xsub для каждого значения cell, но только тех, которые не встречаются в таблице dsub. VFP9S1 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 09:12 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Кузнецов Игорьfull join соответствующих полейДжойнить можно таблицы, а не поля. Наверное, имелось в виду, что в этом роле должны быть все cell - и из первой, и из второй таблицы. Кузнецов Игорьколичество imsi из таблицы dsubколичество различных imsi, наверное? Если мои допущения верны, то Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 10:10 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
tanglir Джойнить можно таблицы, а не поля. Наверное, имелось в виду, что в этом роле должны быть все cell - и из первой, и из второй таблицы. Да, конечно. tanglir количество различных imsi, наверное?. Они уже уникальны в пределах значения cell. Обеспечивается предыдущей выборкой. Буду изучать предложенный вариант. Спасибо. После рихтовки получилось: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Результат есть, буду анализировать его правдоподобность. Но сам бы я такой каскад не осилил. Еще раз спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 12:09 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Кузнецов ИгорьВторое поле - количество imsi из таблицы dsub для каждого значения cell. Кузнецов Игорь Код: sql 1. 2. 3. 4.
Нет, это проще записывается. Подсказка: нужно убрать одну строчку :) Хотя на результат, в общем-то, не повлияет, но работать будет быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 13:17 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Прошу прощения, но я не могу понять. Одну строку я уже убирал (WHERE ...). А пока я прикрутил сюда обращение еще к одной таблицы, чтобы брать не только код для cell, но и название cell. Вот только связка корректно заработала только при VAL(listcell.cellno)=VAL(cells.cell). Иначе отбирались только значения для трехзначных cell (т.е. больше 100) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Но что-то меня терзают смутные сомнения. Некоторые значения оказались заменены звездочками. Значит, напортачил. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:06 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Третье поле почему-то получает размерность N(1). Умещаются только одноразрядные значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:27 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Извиняюсь, четвертое согласно приведенному варианту. То есть nvl(c2.cnt,0). ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 14:29 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Кузнецов ИгорьПрошу прощения, но я не могу понять. Одну строку я уже убирал (WHERE ...).Хорошо, намекну толще. Подзапрос "с1" должен обращаться только к одной таблице (судя по заданию). Нужен ли в таком подзапросе джойн со второй таблицей? Кузнецов ИгорьТретье поле почему-то получает размерность N(1). Умещаются только одноразрядные значения.Неважно, какое по счёту. Используйте cast(... as Numeric(желаемый_размер)) Просто фокс определяет размер поля результата по первому выбранному значению этого поля. Получилось там число от 1 до 9 - значит, N(1), и всё тут :) А cast() позволяет указать, какой разрядности поле должно быть "на самом деле". ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2013, 16:00 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Согласно Вашим подсказкам внес нужные изменения. В итоге получился такой запрос Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 10:10 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Не за что. Только ещё одно маленькое замечание:Кузнецов Игорь Код: sql 1. 2. 3.
LEFT уберите. Условие в where на поле из присоединяемой справа таблицы(listcell) как правило вырождает left join в inner join. Логически вырождает, а оптимизатор всё равно корячится, пытаясь лефт организовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2013, 10:41 |
|
|
start [/forum/topic.php?fid=41&msg=38164286&tid=1583153]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 264ms |
total: | 401ms |
0 / 0 |