这是我在这里的第一篇文章。 我需要创建像facebook这样的Feed,其中包含许多信息,例如用户签到,照片,徽章等等......我需要帮助来创建一个查询才能执行此操作。我怎么能用这个创建一个连接?
select reviews.id_user, reviews.id, reviews.review
from reviews
where reviews.id_user in (1,2,3,4,5)
order by reviews.created_time desc;
select placespops.id_user, placespops.id, placespops.id_pop
from placespops
where placespops.id_user in (1,2,3,4,5)
order by placespops.created_time desc;
select usersfoursquarecheckins.id_user, usersfoursquarecheckins.id
from usersfoursquarecheckins
where usersfoursquarecheckins.id_user in (1,2,3,4,5)
order by usersfoursquarecheckins.created_time desc;
select usersfacebookcheckins.id_user, usersfacebookcheckins.id
from usersfacebookcheckins
where usersfacebookcheckins.id_user in (1,2,3,4,5)
order by usersfacebookcheckins.created_time desc;
select placesphotos.id_user, placesphotos.id
from placesphotos
where placesphotos.id_user in (1,2,3,4,5)
order by placesphotos.created_time desc;
select usersbadges.id_user, usersbadges.id
from usersbadges
where usersbadges.id_user in (1,2,3,4,5)
order by usersbadges.created_time desc;
问题是,如何在一个查询中加入所有内容?
答案 0 :(得分:0)
在这种情况下,看起来最简单的方法就是结合结果集 - 就像这样:
select reviews.id_user,
reviews.created_time,
reviews.id review_id,
reviews.review,
null placespop_id,
null id_pop,
null usersfoursquarecheckin_id,
null usersfacebookcheckins_id,
null placesphotos_id,
null usersbadges_id
from reviews
where reviews.id_user in (1,2,3,4,5)
union all
select placespops.id_user,
placespops.created_time,
null review_id,
null review,
placespops.id placespop_id,
placespops.id_pop,
null usersfoursquarecheckin_id,
null usersfacebookcheckins_id,
null placesphotos_id,
null usersbadges_id
from placespops
where placespops.id_user in (1,2,3,4,5)
union all
select usersfoursquarecheckins.id_user,
usersfoursquarecheckins.created_time,
null review_id,
null review,
null placespop_id,
null id_pop,
usersfoursquarecheckins.id usersfoursquarecheckin_id,
null usersfacebookcheckins_id,
null placesphotos_id,
null usersbadges_id
from usersfoursquarecheckins
where usersfoursquarecheckins.id_user in (1,2,3,4,5)
union all
select usersfacebookcheckins.id_user,
usersfacebookcheckins.created_time,
null review_id,
null review,
null placespop_id,
null id_pop,
null usersfoursquarecheckin_id,
usersfacebookcheckins.id usersfacebookcheckins_id,
null placesphotos_id,
null usersbadges_id
from usersfacebookcheckins
where usersfacebookcheckins.id_user in (1,2,3,4,5)
union all
select placesphotos.id_user,
placesphotos.created_time,
null review_id,
null review,
null placespop_id,
null id_pop,
null usersfoursquarecheckin_id,
null usersfacebookcheckins_id,
placesphotos.id placesphotos_id,
null usersbadges_id
from placesphotos
where placesphotos.id_user in (1,2,3,4,5)
union all
select usersbadges.id_user,
usersbadges.created_time,
null review_id,
null review,
null placespop_id,
null id_pop,
null usersfoursquarecheckin_id,
null usersfacebookcheckins_id,
null placesphotos_id,
usersbadges.id usersbadges_id
from usersbadges
where usersbadges.id_user in (1,2,3,4,5)
order by 2 desc
答案 1 :(得分:0)
这样的事情怎么样:
SELECT r.id_user rid_user, r.id rid, r.review
, p.id pid, p.id_pop
, ufsq.id_user ufsqid_user, ufsq.id ufsqid
, ufbk.id_user ufbkid_user, ufbk.id ufbkik
, pp.id_user ppid_user, pp.id ppid
, ub.id_user ubid_user, ub.id ubid
FROM reviews r
INNER JOIN placespops p ON r.id_user = p.id_user
INNER JOIN usersfoursquarecheckins ufsq ON r.id_user = ufsq.id_user
INNER JOIN usersfacebookcheckins ufbk ON r.id_user = ufbk.id_user
INNER JOIN placesphotos pp ON r.id_user = pp.id_user
INNER JOIN usersbadges ub ON r.id_user = ub.id_user
WHERE r.id_user IN (1,2,3,4,5)
ORDER BY reviews.created_time desc;
这比巨大的UNION