Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
Есть таблица: CREATE TABLE doc ( id INTEGER PRIMARY KEY NOT NULL, pid INTEGER, -- parent id path VARCHAR(128) NOT NULL, descr TEXT ); CREATE INDEX doc_parent ON doc (pid); Нужно найти документы, имеющие заданного родителя, а также узнать имеют ли они, в свою очередь, детей. Можно ли обойтись одним запросом? -- SELECT id, path, descr, (???) as is_parent FROM doc WHERE pid = 7 Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:17 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:27 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
> and d1.id = d2.pid(+) У док-та может и не быть детей. А что значит (+)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 12:38 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
У док-та может и не быть детей. А что значит (+)? outer join ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.03.2004, 13:03 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
select * from doc; --- id pid path descr --- 1 0 snip SNIP 2 0 gost GOST 3 2 gost/1 GOST_1 4 3 gost/1/1 GOST_1_1 5 2 gost/2 GOST_2 SELECT d1.id, d1.path, d1.descr, d2.pid FROM doc d1 OUTER JOIN doc d2 WHERE d1.pid = 2 and d1.id = d2.pid; --- 3 gost/1 GOST_1 3 Не хватает: 5 gost/2 GOST_2 ? След. вариант работает, но не слишком ли криво? SELECT id, path, descr, 1 as sub FROM doc WHERE pid = 2 AND id IN (SELECT pid FROM doc) UNION SELECT id, path, descr, NULL as sub FROM doc WHERE pid = 2 AND id NOT IN (SELECT pid FROM doc) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2004, 08:50 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
ku Что хранится в поле Path ? Весь путь от предка до последнего родителя ? Но с другой стороны в приведенном примере меня смутило значение поля Path: 4 3 gost/1/ 1 GOST_1_1 по идее должно быть 4 3 gost/1/ 3 GOST_1_1 Если поле Path действительно хранит то, что я думаю, то обычный LIKE 'ПутьРодителя\%' поможет сделать все, что Вы хотите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2004, 10:25 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
> Если поле Path действительно хранит то, что я думаю, > то обычный LIKE 'ПутьРодителя\%' поможет сделать все, что Вы хотите. Да, сперва так и хотел сделать. И хранить просто путь с описанием без всяких id. Но LIKE 'ПутьРодителя\%' вернёт все подуровни, а мне нужен только один нижний уровень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2004, 13:34 |
|
||
|
Вычисляемое поле в запросе?
|
|||
|---|---|---|---|
|
#18+
I take following results at Oracle 8.1.7: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2004, 13:44 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=171&tid=1546566]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 174ms |

| 0 / 0 |
