Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы. / 18 сообщений из 18, страница 1 из 1
16.09.2008, 06:11
    #35540993
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Есть таблица1 , в ней есть столбцы: имя, фамилия, отчество, №талона и таблица2 , в ней столбцы: мин_№талона и макс_№талона (диапазон).
Необходимо выявить номера талонов и их владельцев которые не попадают в диапазон.
...
Рейтинг: 0 / 0
17.09.2008, 12:03
    #35543888
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Вобщем нужен скрипт... Думаю для sql-гуру это не составит труда.
...
Рейтинг: 0 / 0
30.09.2008, 05:57
    #35566593
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Видимо задача невыполнима.
...
Рейтинг: 0 / 0
07.10.2008, 14:43
    #35580523
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
SpatzillaНеобходимо выявить номера талонов и их владельцев которые не попадают в диапазон.думаю, придётся читать таблицу диапазонов столько раз, сколько записей в справочнике талонов
иначе говоря, прочитав одну запись справочника (№ талона, ФИО), надо прочитать все записи таблицы диапазонов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
цикл чтения справочника

	цикл чтения таблицы диапазонов
		if №_талона >= min and №_талона <= max then
			ничего не делаем
		else
			создаём временную таблицу
		end if
	конец цикла

конец цикла
интересны и другие варианты, но два цикла, первое что пришло в голову
...
Рейтинг: 0 / 0
07.10.2008, 14:46
    #35580534
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
да ещё
перед добавлением записи во временную/результирующую таблицу, надо проверить, нет ли там уже такой записи
...
Рейтинг: 0 / 0
07.10.2008, 18:12
    #35581400
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
вариант SQL (пробовал в access-е без создания временной таблицы)

Код: plaintext
1.
2.
SELECT *
FROM employee
WHERE Not Exists (SELECT * FROM coupon WHERE employee.talon>=min_talon And employee.talon<=max_talon)=True;
справочник талонов и фамилий employee
talon FIO1 Иванов2 Петров3 Сидоров4 Бесфамильный
таблица диапазонов coupon
min_talon max_talon0 11 22 3
результатом будет Бесфамильный
...
Рейтинг: 0 / 0
08.10.2008, 00:42
    #35581892
YuG
YuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Код: plaintext
select * from T1 where F1 not in (select F1 from T2 where F1 between F_MIN and F_MAX);
...
Рейтинг: 0 / 0
14.10.2008, 10:21
    #35592715
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
klen
Код: plaintext
1.
2.
SELECT *
FROM employee
WHERE Not Exists (SELECT * FROM coupon WHERE employee.talon>=min_talon And employee.talon<=max_talon)=True;

В HyTech выдаёт ошибку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SQL_SYNT_STMT_END       -1016   /* Ожидался конец оператора */

Причина:
        Ошибка в операторе, возможно пропущен знак операции.

        select a from b where a = 5 and b = 7 c = 9
                                              │
                   здесь возникнет эта ошибка─┘

        Если при анализе встречается конструкция, которая не может
        служить продолжением уже проанализированной части SQL оператора,
        то интерпретатор эту конструкцию и считает лишней, хотя
        во ряде случаев просто что-то пропущено (вероятно, ключевое
        слово?).

        select a, b from table1 a = 2
                                │
                                └─ здесь возникнет эта ошибка
                                   потому, что в этом месте
                                   должно быть слово WHERE
...
Рейтинг: 0 / 0
14.10.2008, 10:26
    #35592728
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
YuG
Код: plaintext
select * from T1 where F1 not in (select F1 from T2 where F1 between F_MIN and F_MAX);

Выдаёт ошибку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL_SYNT_CONSTANT       -1009   /* Ожидалась константа */

Причина:
        В соответствии с синтаксисом в операторе должна
        стоять константа, но ее там не оказалось.

        Такое сообщение появится и тогда, когда знак отношения,
        состоящий из нескольких символов, записан с пробелами
        внутри.

                select a, b from table1 where a < = 1
                                                  │
                          Здесь возникнет ошибка ─┘
(возле F_MIN)
...
Рейтинг: 0 / 0
14.10.2008, 10:39
    #35592759
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Ктомуже поле F1 есть только в таблице T1 и выражение
Код: plaintext
select F1 from T2
выдаёт ошибку:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL_RTL_FLD_NOT_FOUND           -35 /* Поле не найдено */

Причина:
        В операторе используется поле, которое отсутствует
        в таблице HyTech.
        Имя может быть неправильно записано.

        Символы верхнего и нижнего регистров в именах
        полей различаются.

        Если в таблице есть поле 'Fio',
        а в программе используется обращение к этому полю
        как к 'fio', то произойдет ошибка.
...
Рейтинг: 0 / 0
14.10.2008, 13:27
    #35593296
YuG
YuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
1. Естественно, что F_MIN и F_MAX должны быть константами, указывающими границы диапазона.
2. Ничто не мешает иметь поля с одинаковыми именами в разных таблицах, но если понятней так, то можно написать
Код: plaintext
select * from T1 where T1.F1 not in (select T2.F1 from T2 where T2.F1 between :F_MIN and :F_MAX);
Главное, чтобы поля T1.F1 и T2.F1 были одинакового размера.
...
Рейтинг: 0 / 0
15.10.2008, 10:31
    #35595058
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
таблица имеет имеено такой вид:
klen_...
talon FIO1 Иванов2 Петров3 Сидоров4 Бесфамильный
таблица диапазонов coupon
min_talon max_talon0 11 22 3
...
содержимое и размер таблиц к сожалению разный...
...
Рейтинг: 0 / 0
15.10.2008, 16:56
    #35596385
klen_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
это access 2000
запрос просто отбражает запись(и) не попавшие в диапазон
а форма добавляет запись(и) в Таблицу1
...
Рейтинг: 0 / 0
15.10.2008, 21:42
    #35596990
YuG
YuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Тогда предлагаю добавить в каждую таблицу по полю, допустим, B1 типа byte и значением в каждой записи равному 1.
и получится примерно следующее
Код: plaintext
1.
2.
3.
select * from employee where talon not in (
select talon from (
select a.talon, (a.talon >= b.min_talon) + (a.talon <= b.max_talon) as DLT from employee a, coupon b where a.B1 = b.B1)
where DLT =  2 );
...
Рейтинг: 0 / 0
16.10.2008, 07:53
    #35597241
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
К сожалению таблицы править нельзя. Только мониторинг.
Без
Код: plaintext
where a.B1 = b.B1
выдаёт ошибку: -31 — Несвязанные таблицы
...
Рейтинг: 0 / 0
16.10.2008, 13:57
    #35598259
YuG
YuG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
Код: plaintext
1.
2.
3.
select * from employee where talon not in (
select talon from (
select a.talon, (a.talon >= b.min_talon) + (a.talon <= b.max_talon) as DLT from (select byte( 1 ) as B1,  talon from employee) a, (select byte( 1 ) as B1, min_talon, max_talon from coupon) b where a.B1 = b.B1)
where DLT =  2 );
...
Рейтинг: 0 / 0
17.10.2008, 11:03
    #35600226
Spatzilla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
А вот этот скрипт работает как надо! Спасибо :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
09.09.2012, 21:25
    #37950146
solonov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы.
YuG,
Помоги сравнить два поля из разных таблиц через like
Я написал скрип но он не прокатывает.

fix all;
select a.NUM as BL_NUM, a.NAME as BL_NAME,
b.NAME as NAME_35,
b.F_NOMER as F_NOMER35 ,
b.L_NOMER as L_NOMER35
from _BL a, _BOLLST_ b

where
a.NAME like b.NAME

;
results table '**_ttt';
select BL_NAME, NAME_35, F_NOMER35
//, BL_ID
from _ttt
;
...
Рейтинг: 0 / 0
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / HyTech, вывод значений таблицы не попадающих в диапазон значений другой таблицы. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]