Этот вопрос, вероятно, задавался много раз, поэтому, пожалуйста, извините меня за дубликаты, но я просто не мог найти что-то подобное и не смог построить что-то похожее на то, чего я хочу достичь.
Например, допустим, у меня есть следующая структура таблицы:
//tasks
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | P | None | AI |
| user | int(11) | NO | | None | |
| data | varchar(200) | NO | | None | |
+-------+--------------+------+-----+---------+-------+
//votes
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | P | | AI |
| user | int(11) | NO | | | |
| item | int(11) | NO | | | |
| up | tinyint(1) | NO | | 0 | |
| down | tinyint(1) | NO | | 0 | |
+-------+--------------+------+-----+---------+-------+
Со следующими данными:
//tasks
+----+------+------------+
| id | user | data |
+----+------+------------+
| 1 | 1 | something |
| 2 | 2 | lorem ip |
| 3 | 1 | biggy |
+----+------+------------+
//votes
+----+------+------+----+------+
| id | user | item | up | down |
+----+------+------+----+------+
| 1 | 8 | 1 | 1 | 0 |
| 2 | 4 | 1 | 1 | 0 |
| 3 | 2 | 1 | 0 | 1 |
| 4 | 2 | 2 | 1 | 0 |
| 5 | 1 | 2 | 1 | 0 |
+----+------+------+----+------+
Я хочу сделать что-то похожее на:
SELECT r.* FROM `tasks` WHERE `user` = '1' r
LEFT JOIN (SELECT SUM(t.up) AS up,
SUM(t.down) AS down
FROM `votes` t
WHERE t.item = r.id) r ON r.id = t.item
И да, это мой запрос, но он не работает, и я не знаю, как это исправить.
В основном я хочу:
- Выбрать все из таблицы задач , где
user
- "x" - Присоединиться к каждой строке из задач (выбрано)на шаге 1) с суммой
up
, суммой down
из таблицы голосов , где item
равно id
с tasks
И это должно привести к чему-то вроде (т.е. user
= 1):
+----+------+------------+----+------+
| id | user | data | up | down |
+----+------+------------+----+------+
| 1 | 1 | something | 3 | 1 |
| 3 | 1 | biggy | 0 | 0 |
+----+------+------------+----+------+
Что ж, я надеюсь, что вы, ребята, понимаете и можете помочье с этим.
Заранее спасибо!