Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
vot u menja takoj problem.. nado sdelatj analogichnij zapros ne ispolzuja sub-select dve tablicy doc --------- DOCID DESCR 1 data1 2 data2 3 data3 4 data4 --------- IDDOC - unikaljno kword ---------- DOCID KEYWORD 1 aa 1 bb 1 cc 2 aa 2 bb 2 cc 3 xx ......... --------- para (IDDOC - keyword) - unikaljna Надо показать все doc.IDDOC для которых присутствует в таблице kword ВСЕ 3поля keyword со значением 'aa' 'bb' 'cc' вот как я это сделал SELECT d.DOCID, d.DESCR FROM doc AS d WHERE EXISTS( SELECT * FROM kword AS k WHERE k.IDDOC=d.IDDOC and k.keyword='aa') AND EXISTS( SELECT * FROM kword AS k WHERE k.IDDOC=d.IDDOC and k.keyword='bb') AND EXISTS( SELECT * FROM kword AS k WHERE k.IDDOC=d.IDDOC and k.keyword='сс'); а нужно сделать БЕЗ вложенных селектов и обязательно начинать вот так select d.DOCID, d.DOCNAME from doc d, kword k where d.DOCID = k.DOCID Помогите пожалста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 13:23 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
Попробуй так: select d.DOCID, d.DOCNAME from doc d, kword k where d.DOCID = k.DOCID AND k.keyword IN ('aa','bb','сс') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 13:46 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
Извиняюсь, забыл добавить самое главное select d.DOCID, MAX(d.DOCNAME) as DOCNAME from doc d, kword k where d.DOCID = k.DOCID AND k.keyword IN ('aa','bb','сс') GROUP BY d.DOCID HAVING COUNT(*)=3 Правда это сработает, только если пара k.DOCID - k.keyword действительно уникальна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 14:03 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
что то не работает ... тем более нельзя MAX(...) ставить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 14:26 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
Странно... У меня MS SQL 7 и такая конструкция прекрасно работает. А MAX() ставить необходимо, поскольку при использовании GROUP BY недопустимо указывать просто имя поля без функций аггрегирования, если эти поля не являются полями по которым идет группировка. Кроме того, я предполагаю, что для одного и того же значения DOCID значение DOCNAME должны быть одинаковыми, т.е. MAX() ничему не помешает. А что собственно не работает? Или какими словами ругается? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 14:41 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
пустой респонс ответ ..ошибок то нету кстати этот запрос надо в ANSI писать...а тестировал я на Accesse может какой другой вариант существует ? ... башка скоро треснет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 14:45 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
Можно, только без вложенных запросов - вряд ли. Кстати, может диалект Access отличается от стандартного. Кажется там вообще нельзя писать поля без функций аггрегирования если стоит GROUP BY. Т.е. поставь MAX() ко всем полям. На результат это не должно повлиять. (!) Кажется понял в чем может быть ошибка. Сравнение символьных строк осуществляется по полной строке? Т.е. что вернет сравнение: 'aa '='aa' Может в выражении списка IN надо добить каждое выражение справа нужным количеством пробелов? Или написать в лоб: where d.DOCID = k.DOCID AND (k.keyword='aa ' OR k.keyword='bb ' OR k.keyword='сс ') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 15:00 |
|
||
|
select bez sub-selectov ..
|
|||
|---|---|---|---|
|
#18+
select d.DOCID, d.DOCNAME from doc d inner join kword k1 on d.DOCID=k1.DOCID inner join kword k2 on d.DOCID=k2.DOCID inner join kword k3 on d.DOCID=k3.DOCID where K1.KEYWORD='aa' and K2.KEYWORD='bb' and K3.KEYWORD='cc' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.04.2002, 17:45 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32028219&tid=1823037]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
92ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 263ms |
| total: | 462ms |

| 0 / 0 |
