У меня есть таблица news
, как показано ниже:
CREATE TABLE `news` (
`title` varchar(255) NOT NULL,
`hash` char(40) NOT NULL,
PRIMARY KEY (`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
И еще одна таблица votes
:
CREATE TABLE `votes` (
`hash` char(40) NOT NULL,
`user_id` varchar(255) NOT NULL,
`vote_type` enum('up','down') DEFAULT NULL,
PRIMARY KEY (`hash`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Теперь я хочу получить что-то подобное, когда пользователь вошел в систему -
this_is_a_title hash_12312312 NULL
this_is_a_title hash_12312313 up
this_is_a_title hash_12312314 NULL
this_is_a_title hash_12312315 down
Можете ли вы предложить оптимальный одиночный запрос для этого?
Я думаю, что мой вопрос не был ясен. Простите за это.
Под полем NULL я имел в виду нового, у которого нет ни одного голоса, отданного этим пользователем или кем-либо еще.
Моя версия -
SELECT news.*, votes.vote_type
FROM news
LEFT OUTER JOIN votes
ON votes.`hash` = news.`hash`
AND votes.`user_id` = #