2013-11-21 4 views
0

Я хотел бы объединить два результата запроса, чтобы получить отсортированный таблицу с порядком по количествуОбъединение двух таблиц и OrderBy подсчет

У меня есть две таблицы Первый: like_spotted Запрос является

SELECT l.id as like_id, l.spotted_id as spotted_id,count(l.spotted_id) as numero_likes, 
MAX(l.createdAt) as created 
FROM sn_like_spotted l 
LEFT JOIN prof_foto f 
ON f.id = l.spotted_id 
LEFT JOIN sn_profilo p 
ON f.profilo_id = p.id 
WHERE p.id = 3 
GROUP BY l.spotted_id 
ORDER BY numero_likes DESC, created DESC 
LIMIT 0,5 

Результаты:

like_id spotted_id numero_likes created 
    31 223    6   2013-11-21 16:31:20 
    11 175    5   2013-11-21 17:00:35 
    23 217    2   2013-11-15 22:52:41 

Второе: like_answer Запрос является

SELECT l.id as like_id, l.risposta_id as risposta_id,count(l.risposta_id) as numero_likes, 
MAX(l.createdAt) as created 
FROM sn_like_risposta l 
LEFT JOIN sn_risposte r 
ON r.id = l.risposta_id 
LEFT JOIN sn_profilo p 
ON r.profilo_id = p.id 
WHERE p.id = 3 
GROUP BY l.risposta_id 
ORDER BY numero_likes DESC, created DESC 
LIMIT 0,5 

like_id   risposta_id  numero_likes  created 
18     94    4   2013-11-21 17:00:35 
10     93    2   2013-11-20 13:30:53 
7     85    1   2013-11-14 12:16:11 
6     84    1   2013-11-14 12:15:38 

Я хотел бы «смешанный результат» по заказу «numero_likes» DESC Могу ли я это сделать?

ответ

1

Да, вы можете сделать это с помощью UNION ALL

(SELECT l.id as like_id, l.spotted_id as spotted_id,null AS risposta_id , count(l.spotted_id) as numero_likes, 
MAX(l.createdAt) as created 
FROM sn_like_spotted l 
LEFT JOIN prof_foto f 
ON f.id = l.spotted_id 
LEFT JOIN sn_profilo p 
ON f.profilo_id = p.id 
WHERE p.id = 3 
GROUP BY l.spotted_id 
LIMIT 0,5) 

UNION ALL 
(SELECT l.id as like_id, null AS spotted_id,l.risposta_id as risposta_id,count(l.risposta_id) as numero_likes, 
MAX(l.createdAt) as created 
FROM sn_like_risposta l 
LEFT JOIN sn_risposte r 
ON r.id = l.risposta_id 
LEFT JOIN sn_profilo p 
ON r.profilo_id = p.id 
WHERE p.id = 3 
GROUP BY l.risposta_id 
LIMIT 0,5) 
ORDER BY numero_likes DESC, created DESC 

UNION

+1

Я попытался с помощью UNION, спасибо! – Barno

Смежные вопросы