SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.03.2012 12:02:24

evgm
Участник
Зарегистрирован: 01.04.2009
Сообщений: 7

Прошу помочь с запросом

Привет всем!

Помогите, пожалуйста, составить запрос.
Замаялся совсем - никак не врублюсь... Есть таблица

id    num    pk    mt    pt
15    7    16527    93    1
16    8    16527    93    2
33    25    16531    51    1
34    26    16531    51    2
38    30    16532    44    2
43    36    16533    78    2
44    35    16533    79    1
66    57    16538    78    1
67    60    16538    78    2
217    210    16574    39    2
218    209    16574    75    1

из которой в результирующую нужно выбрать только парные строки
у которых разница pk+mt/100 не более 10 (то есть a=ABS((pk_1+mt_1/100 - pk_2+mt_2/100)*100)<=10)
и значения в поле pt не равны. То есть в результате хотелось видеть следующую таблицу

id_1    num_1    pk_1    mt_1    pt_1    id_2    num_2    pk_2    mt_2    pt_2
15    7    16527    93    1    16    8    16527    93    2
33    25    16531    51    1    34    26    16531    51    2
44    35    16533    79    1    43    36    16533    78    2
66    57    16538    78    1    67    60    16538    78    2

Записи с id 38, 217 218 в результат не попадают поскольку у 38 записи нет пары, а у записей 217 и 218 условие разности > 10.

Все поля INT, записей в исходной таблице тысяч 2 не более, так что скорость особо не важна.
Заранее спасибо.

Неактивен

 

#2 16.03.2012 12:24:13

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Прошу помочь с запросом

select t1.id as id_1, .... from `таблица` t1 join `таблица` t2 on t1.pt_1<>t2.pt_2 where ABS((pk_1+mt_1/100 - pk_2+mt_2/100)*100)<=10;

Неактивен

 

#3 16.03.2012 14:19:24

evgm
Участник
Зарегистрирован: 01.04.2009
Сообщений: 7

Re: Прошу помочь с запросом

select t1.id as id_1,
       t1.num as num_1,
       t1.pk as pk_1,
       t1.mt as mt_1,
       t1.pt as pt_1,

       t2.id as id_2,
       t2.num as num_2,
       t2.pk as pk_2,
       t2.mt as mt_2,
       t2.pt as pt_2

from `test_table` t1
join `test_table` t2 on t1.pt_1<>t2.pt_2
where ABS((t1.pk_1+t1.mt_1/100 - t2.pk_2+t2.mt_2/100)*100)<=10;

Выдает ошибку : Unknown column 't1.pk_1' in 'where clause'

Неактивен

 

#4 16.03.2012 14:50:25

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Прошу помочь с запросом

join `test_table` t2 on t1.pt<>t2.pt
where ABS((t1.pk+t1.mt/100 - t2.pk+t2.mt/100)*100)<=10;

Неактивен

 

#5 19.03.2012 07:50:42

evgm
Участник
Зарегистрирован: 01.04.2009
Сообщений: 7

Re: Прошу помочь с запросом

спасибо огромное - все получилось

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson