Задавайте вопросы, мы ответим
Вы не зашли.
Привет всем!
Помогите, пожалуйста, составить запрос.
Замаялся совсем - никак не врублюсь... Есть таблица
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 не более, так что скорость особо не важна.
Заранее спасибо.
Неактивен
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;
Неактивен
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'
Неактивен
join `test_table` t2 on t1.pt<>t2.pt
where ABS((t1.pk+t1.mt/100 - t2.pk+t2.mt/100)*100)<=10;
Неактивен
спасибо огромное - все получилось
Неактивен