Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.06.2011, 16:58
|
|||
|---|---|---|---|
|
|||
select from |
|||
|
#18+
Ребят, подскажите, пожалуйста, в чем ошибка. Уже голову сломал. Написал элементарный запрос: SELECT Reevypdlo.dat_vyp, Reevypdlo.sn_lr, Reevypdlo.med, Reevypdlo.kol; FROM reevypdlo, adlo; WHERE Reevypdlo.sn_lr <> adlo.recept Foxpro9 выдает ошибку: file 1111.tmp is too large. Но, если: SELECT Reevypdlo.dat_vyp, Reevypdlo.sn_lr, Reevypdlo.med, Reevypdlo.kol; FROM reevypdlo, adlo; WHERE Reevypdlo.sn_lr = adlo.recept то запрос норм получается. Та же ситуация, если делать через inner join. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2011, 17:18
|
|||
|---|---|---|---|
select from |
|||
|
#18+
Так ведь ясно же прямо английским языком и написано, что результат получается слишком большим. Системное ограничение FoxPro на таблицы DBF: 1 миллиард записей или 2ГБ объема. Вот по какой-то из этих характеристик и вылетел за границы. У тебя же условие объединения Reevypdlo.sn_lr <> adlo.recept, что означает, по сути, перемножение количества записей в первой таблицы на количество записей во второй. За небольшим исключением тех записей, коды которых совпадают. Т.е. если, например, в обоих таблицах по 1 тысяче записей и связь между ними один-к-одному, то в результате условия связи по не равенству в результирующей выборке получим: 1000*1000-1000-1000 = 998000. Напиши словами, что именно надо получить. Может, подскажут какой именно запрос надо написать без необходимости в декартовом произведении записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2011, 17:25
|
|||
|---|---|---|---|
|
|||
select from |
|||
|
#18+
Ну нужно выбрать записи из таблицы Reevypdlo, где поле Reevypdlo.sn_lr не равно полю adlo.recept в таблице Reevypdlo. Формат полей одинаковый (c20) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2011, 17:36
|
|||
|---|---|---|---|
select from |
|||
|
#18+
ОлегОлегОлегНу нужно выбрать записи из таблицы Reevypdlo, где поле Reevypdlo.sn_lr не равно полю adlo.recept в таблице Reevypdlo. Формат полей одинаковый (c20) Этого недостаточно. Предположим у тебя такие данные Reevypdlo.sn_lr AA BB CC adlo.recept AA DD EE Берем первую запись из таблицы Reevypdlo. Значение AA равно значению в первой записи таблицы adlo, но не равно значению во второй и третьей записи таблицы adlo. Так вот, надо ли чтобы запись из таблицы Reevypdlo со значение AA вообще не попала в итоговую выборку или попала 2 раза? Ведь ее нет для 2 записей таблицы adlo. Если интересует первый вариант, то он решается через NOT EXISTS() или NOT IN () Код: plaintext 1. 2. или так Код: plaintext 1. 2. С точки зрения производительности оба варианты практически одинаковые. Какой из них выбрать - вопрос личных предпочтений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=41&mobile=1&tid=1584310]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 370ms |

| 0 / 0 |
