Объединение разных таблиц и суммы и разницы

Polina

Новичок
Здрасте, помогите решить задачу.
имеется tab_1 с структурой к пр
+--------+---------------+
| sum 1| name 1 |
+--------+---------------+
| 3 | Книга |
| 3 | Карандаш |
| 3 | Карандаш |
| 2 | Табуретка |
+--------+---------------+

tabl_2 с структорой
+--------+---------------+
| sum 2| name 2 |
+--------+---------------+
| 1 | Книга |
| 2 | Табуретка |
| 3 | Карандаш |
| 1 | Карандаш |
| 2 | Линейка |
+--------+---------------+

и так делаю запрос №1
PHP:
SELECT name 1, SUM(sum 1)
FROM
tab_1
GROUP BY
name 1
получаю :

+--------+---------------+
| SUM( | |
| sum 1)| name 1 |
+--------+---------------+
| 3 | Книга |
| 6 | Карандаш |
| 2 | Табуретка |
+--------+---------------+


делаю запрос №2
PHP:
SELECT name 2, SUM(sum 2)
FROM
tab_2
GROUP BY
name 2
получаю :

+--------+---------------+
| SUM( | |
| sum 2)| name 2 |
+--------+---------------+
| 1 | Книга |
| 2 | Табуретка |
| 4 | Карандаш |
| 2 | Линейка |
+--------+---------------+

теперь возник вопрос, как минусовать с полученного запроса №1 значения с запроса 2, то есть чтоб вышла таблица такая

+--------+---------------+
| 2 | Книга |
| 2 | Карандаш |
| 0 | Табуретка |
| -2 | Линейка |
+--------+---------------+
 

Вурдалак

Продвинутый новичок
У тебя что-то странное со структурой, наверняка обе таблицы можно сделать одной. Запрос можно сделать такой:
Код:
SELECT s1 - s2, t1.name FROM (...) t1 JOIN (...) t2 ON t1.name = t2.name
 

Polina

Новичок
У меня две таблицы, в одном платежи, в другом долги. Просто в платежах могут находится те пользователи, в которых нет в долгах , и наоборот. Так вот ранее я делала два разных запроса
PHP:
SELECT id_polzovatel, SUM(summa)
FROM
dolg_posle_vikupa

GROUP BY
dolg_posle_vikupa.id_polzovatel
и второй запрос
PHP:
SELECT
plateji.zakaz4ik_platej, SUM(summa_plateja)
FROM
plateji
WHERE
plateji.status_plateja = 'Подтвержден'
GROUP BY
plateji.zakaz4ik_platej
Так вот ранее я получала данные значения и посредством PHP объединяла. Но тут решила сделать всё на Mysql , так как начала переходит в jqgrid

так вот из таблицы dolg_posle_vikupa я вычитала plateji по принципу id_polzovatel == plateji.zakaz4ik_platej , Грубо говоря с условиями:
1) если в таблице dolg_posle_vikupa не оказывалась пользователя, который есть в таблице plateji , то я его всё равно добавляла в результат, с значением минус.
2) если в таблице plateji не оказывалась пользователя, который есть в таблице dolg_posle_vikupa, то я его всё равно добавляла в результат, с значением плюс.
3) если есть данный пользователь в dolg_posle_vikupa и в plateji , то я вычитала

P.S. Вышло уж так, что я PHP , Mysql и Ajax технология начала изучать всего лишь пол года тому назад. Поэтому и есть пробелы в знаниях, либо что то подзабыла, так как все спеша изучала)
 

Polina

Новичок
Всё, спасибо, с просони разобралась, сделала это так

PHP:
SELECT id_polzovatel, SUM(summa)
FROM (
		SELECT id_polzovatel, summa
		FROM
		dolg_posle_vikupa
	UNION ALL
		SELECT
		plateji.zakaz4ik_platej,-1*summa_plateja
		FROM
		plateji
		WHERE
		plateji.status_plateja = 'Подтвержден'
)
AS `t` GROUP BY id_polzovatel
 
Сверху