У меня есть две таблицы в одной собрано количество лайков по фотографии, а во второй по той же фото кол-во комментариев. Ну по разным фоткам конечно.
Как обьединить две таблицы в одну, что бы выводились все photo_id
даже если по нему нет лайка или комментария?
Я делаю так:
SELECT
v_photo_like_count.photo_id,
v_photo_like_count.like_count,
v_photo_comment_count.comment_count
FROM v_photo_comment_count
RIGHT OUTER JOIN v_photo_like_count
ON v_photo_comment_count.photo_id = v_photo_like_count.photo_id
Но в исходной таблице присутствует только одна фотка у которой есть и лайки и комментарии, как сделать что бы photo_id
выводился в любом случае?
Берем таблицу фотографий (она у вас должна быть) и через LEFT JOIN присоединяем сначала таблицу лайков, а потом коментов (или наоборот порядок не важен. Присоединять нужно к исходной таблице)
SELECT p.id, l.like_count, c.comment_count
FROM v_photos p
LEFT JOIN v_photo_comment_count c ON c.photo_id = p.id
LEFT JOIN v_photo_like_count l ON l.photo_id = p.id
Работать должно быстрее чем через UNION
Т.к. full join
в MySQL не предусмотрен, т.к. без него можно обойтись заменой на left join ... union ... right join
, что, собственно, тут и надо сделать:
select cc.photo_id,
cc.comment_count,
ifnull(lc.like_count, 0) as like_count
from v_photo_comment_count cc
left join v_photo_like_count lc on cc.photo_id = lc.photo_id
UNION
select lc.photo_id,
ifnull(cc.comment_count, 0) as comment_count,
lc.like_count
from v_photo_comment_count cc
right join v_photo_like_count lc on cc.photo_id = lc.photo_id
В данном случае необходим full join
, которого нет в MySQL, но его можно легко заменить union двух выборок с группировкой по колонке, по которой предполагалось соединение:
select photo_id, sum(like_count) like_count, sum(comment_count) comment_count
from (
SELECT photo_id, like_count, null comment_count
from v_photo_like_count
union all
SELECT photo_id, null, comment_count
from v_photo_comment_count
) x
group by photo_id
LEFT JOIN
на обе таблицы:
select photo.*, t1.num, t2.num
from photo
left join t1 using(f)
left join t2 using(f)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Даже когда пытаюсь посмотреть версию mysql - mysql -v Выходит ошибка:
Прошу прощения за, возможно, простой вопросКак зажать кнопку используя обработчик событий onclick(без использования JQuery):
Хочу создать аналогичное меню с иконками от fontawesome Сделал я все через divЕдинственная проблема которая у меня создалась это ширина каждого...