Mysql Помогите с запросом MySQL

ystery

Новичок
Есть таблица:
id1 id2 vol
10 343 5
11 343 4
10 344 7
11 344 6

Как получить разницу ячеек с одинаковым id2, но разным id1 (5-4) и (7-6)?
Таблица большая и хотелось бы пройтись по всем id2.
Может подскажите в какую сторону копать, а то прям даже не знаю с чего начать читать =)

Заранее спасибо
 

hell0w0rd

Продвинутый новичок
PHP:
SELECT t1.id1 - t2.id1
FROM test t1
JOIN test t2 ON t1.id2 = t2.id2
Хотя что-то не то.. но тут явно надо что-то группировать, или джойнить... если хочется одним запросом

А зачем вообще такая задачка?
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
А такие задачки как раз очень хорошо развивают чувство базы :)
А запрос вы написали почти верно.
Надо только дополнительно отсортировать БД, и вычесть правильные колонки.
 

hell0w0rd

Продвинутый новичок
AnrDaemon, аа:)
PHP:
SELECT t1.id, t2.id, t1.id1 - t2.id1
FROM test t1
JOIN test t2 ON t1.id2 = t2.id2 AND t1.id1 <> t2.id1
Осталось убрать дубликаты
PHP:
SELECT t1.id, t2.id, t1.id1 - t2.id1
FROM test t1
JOIN test t2 ON t1.id2 = t2.id2 AND t1.id1 <> t2.id1
GROUP BY t1.id2
 

ystery

Новичок
спасибо за помощь.
по поводу зачем:
До меня были сделаны таблицы и надо срочно (как обычно вчера) сделать отчеты.
Структура была организована мягко говоря неоптимально.
Есть отдельная таблица отчетов (это параметр id2), а сами данные отчетов лежат в этой таблице и появилась необходимость посчитать разности некоторых позиций (id1) в этой таблице.
Код:
t1.id, t2.id
id в таблице нет
Код:
 AND t1.id1 <> t2.id1
Это наверно не надо так как сочетание (id1,id2) уникальны?
Код:
GROUP BY t1.id2
Тоже наверно не надо?

Код:
FROM test t1
Разве не так правильно:
Код:
FROM test AS t1
Не могу сообразить что не так делаю. ошибка с "t1.id" и "t2.id".
 

hell0w0rd

Продвинутый новичок
ystery, AS можно опустить, я джойню таблицу саму с собой. Разберись в запросе по лучше;)
 
Сверху