|
|
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Я пробую использовать следующий запрос : Код: plaintext 1. 2. 3. 4. 5. но выдается ошибка Код: plaintext если вызывать отдельно : Код: plaintext 1. 2. выдается все работает выдается несколько значений ... может быть есть какие-то ограничения на глубину вложенности запросов ??? Заранее благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 16:17:40 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
select WordsFirms.keyword from WordsFirms where WordsFirms.keyword = (Select WordForms.wf_value from WordForms WHERE WordForms.W_ID in ( SELECT WordForms.W_ID FROM WordForms WHERE WordForms.wf_value= 'банки') ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2004, 16:28:13 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Спасибо переписал запрос : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Запрос почему-то зависает :( Хотя если поставвить вместо : Код: plaintext 1. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 14:52:24 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
а тот запрос, что я написал тоже зависает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 14:55:59 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Нет не зависает ... но он выдает лишь часть необходимой информации ... Которую необходимо использовать для последующей выборки :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:04:43 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. А такое не годится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:16:37 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Неа виснет наглухо хотя в базе записей - то кот наплакал :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:49:49 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
кхм... структуру таблиц и то что требуется... а то так не врубаюсь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 15:55:31 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
так не поможет? SELECT f_id,predpr_uslugi FROM (WordForms INNER JOIN WordsFirms ON WordForms.wf_value=WordsFirms.keyword) INNER JOIN FIRMS ON WordsFirms.f_id=FIRMS.f_id WHERE WordForms.wf_value='банки' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 16:09:36 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Victosha нет не то ... Да действительно это моя ошибка что сразу не поставил четко задачу и не рассказал о структуре : Структура таблиц следующая : WordsForms :таблица слов и словоформ ... где w_id-ссылка на слово к которому подбираются словоформы ,а wf_value сами словоформы WordsFirms :таблица связи слов и Id_Предприятия Сразу же оговорюсь база сделана так (в виду некоторых обстоятельств ) что keyword могут не содержаться в WordsForms.wf_value поэтому и наоборот может содержаться одна из слофоформ слова в запросе. Таким образом нужна следующая последовательность действий : 1)определяем группу все словоформы заданных в запросе слов : Код: plaintext 1. 2. 3. 3)Но т.к. в группе слов и словоформ могут и не быть слова поиска ... то необходимо еще проверить возможно эти слова поиска входят в ключевые WordsFirms.keywords ...вот такая проблема ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 16:30:11 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Сорри, если будет время, на выходных гляну и подумаю... бежать пора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 16:36:00 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
с трудом, вообще врубился, если врубился, в чем я сильно сомневаюсь Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2004, 22:55:51 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
ССорри отьезжал в командировку ... Shurgenz , пробую разобраться в твоем SELECTe ... выглядит очень серьезно ;) в общем-то перед командировкой я добился работы следующей выборки : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. По заданным по поиску словам определяю их словоформы если они есть и заодно по самим словам делаю поиск , результаты обьединяю ... Дак вот если вместо обьединения результатов вставить просто дополнительную проверку OR как видно это вполне реально то запрос виснет ... а данный запрос работает только с 8-м сервис паком MicrosoftJet Provider /// СТранно !) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:11:40 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Shurgenz Протестировал твой запрос ... да действительно ты правильно понял задачу ... единственное необходимо модифицировать запрос до : Код: plaintext 1. 2. 3. 4. 5. И тут-то и начинается зависание ... я примерно до такого же запроса дошел ... но ... попробовал разбить условия и сделать обьединение ... вроде не виснет ... но тут как я уже сказал проблема во вложенном запросе не должно было быть обьединений ... необходимо АПДЕЙТ Microsof JET OLE DB Provider делать ... В общем странно почему так происхоидт :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 13:40:40 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
1. попробуй подчиненные запросы в In(SELECT ... ) переписать на EXISTS(SELECT * FROM WordForms AS sub ) перенеся WordsFirms.keyword = sub.W_ID в WHERE подзапроса (и тот и другой подзапрос выполняется аксессом для каждой записи внешнего запроса, но SELECT в EXISTS обязан только найти первую попавшуюся, а SELECT в In - вернуть все записи. 2. Попробуй взять SELECT в IN в квадратные скобки [ ]. Примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 3. Не стоит совсем отмахиваться от JOIN: Пример (Акс 97): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 14:57:30 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Пример для 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:08:37 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Спасибо , уже пробую ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2004, 15:32:26 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Протестировал следующий запрос : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Но необходима работа следующего запроса : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. А он то как раз и виснет из-за добавленного условия Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 13:25:20 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
че-то там не так 1) AND WordsFirms.f_id=FIRMS.f_id должно делаться на все в EXISTS, т.е. быть за скобками на (... OR ...) а у Вас напротив, OR распространяется на все 2). Усли уходите от IN(SELECT ...) в главном запросе, что мешает уйти от них и в подчиненных (всех уровней). 3). Ваша логика построения запроса такова, будто бы сначала выполняется самый вложенный, а затем включающий его? На самом деле это не так. Для каждой записи основного запроса выполняются вложенные (и далее - внутрь). Т.ч. если есть возможность снизить уровень вложенности - сделайте это. Поскольку я не знаю вашей задачи, не могу и проанализировать логическое соответствие структуры запроса - задаче и снизить уровень вложенности, т.ч. попробую отойти от "культурных наслоений" и взяв первый ваш запрос, формально выполнить редактирование, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если же это не так (т.е. если существуют записи W1.W_ID = W2.W_ID AND W2.wf_value= 'банки' AND W1.wf_value<> 'банки') то все равно вложенные запросы вряд ли стоит строить так многоступенчато, как вы пишете. В этом случае достаточно: * FROM WordForms AS W1 INNER JOIN WordForms AS W2 ON (W1.W_ID = W2.W_ID AND W2.wf_value= 'банки') WHERE W.keyword =W1.wf_value ибо от вложенных в EXISTS запросов обновляемости и не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 14:23:34 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Написал вот такой запрос может поспешил .. не пойму почему возвращает повторные записи ... это наверное сказывается конец рабочего дня ... Все работает СУПЕР !!! Код: plaintext 1. 2. 3. 4. 5. Но опять таки куда вставить доп.условие : Код: plaintext И еще вопрос есть ли в АКЦЕССЕ такое понятие как UDF и если есть можно ли писать так : ORDER BY UDF (...) а во внутрь передавать Мемо поле ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 16:01:51 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Patriot Код: plaintext 1. 2. 3. 4. 5. Но опять таки куда вставить доп.условие : Код: plaintext И еще вопрос есть ли в АКЦЕССЕ такое понятие как UDF и если есть можно ли писать так : ORDER BY UDF (...) а во внутрь передавать Мемо поле ? это што ли надо? Код: plaintext 1. 2. 3. 4. 5. 6. 7. В кач-ве UDF - VBA ф-ии. Скажем MyFun(fMEMO) тады как-то так: SELECT * , MyFun(fMEMO) as Ord FROM MyTable ORDER BY MyFun(fMEMO); по моему начиная с некоего SP на jet можно даже ORDER BY [fMEMO]. Поищи на форуме (в том топике было кажется {ORDER BY + MEMO + SP + JET4.0 + GROUP BY + DISTINCT} ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2004, 18:31:22 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Я единственного не пойму почему этот самый запрос : Код: plaintext 1. 2. 3. 4. 5. выполняется мгновенно а вот этот : Код: plaintext 1. 2. 3. 4. 5. 6. Почти больше и это при том что количество записей в базе не больше 3000 в каждой из используемых таблиц ... Заранее Спасибо за участие запрос действительно преобразился 4321 , большое спасибо за помощь !!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 12:18:27 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Не договорил ... второй запорос выпоняется более минуты :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 12:19:31 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
И что самое поразительное опять-таки следующий запрос выполняется мгновенно ... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Не пойму , что в этом не так ??? : Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 12:26:09 |
|
||
|
Вложенный запрос
|
|||
|---|---|---|---|
|
#18+
Запусти лог анализа запросов (ищи по форуму -запускается после редактирования регистри). Они (запросы) явно исполняются по разному. В случае с OR можно подозревать фильтр (на все записи). В случае без него - что-то иное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2004, 13:49:24 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32779872&tid=1670244]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 366ms |

| 0 / 0 |
