(
SELECT
upd.uid,
upd.update_id,
upd.update,
upd.date,
upd.type,
upd.total_likes,
upd.total_comments,
upd.deleted,
usr.username AS `username`,
usr.profile_picture AS `profile_picture`
,(
SELECT
COUNT(lik.id)
FROM
likes as lik
WHERE
upd.update_id = lik.item_id
AND
lik.uid = 118697835834
AND lik.type=0
) as liked_update,
(
SELECT
COUNT(fav.id)
FROM
favorites as fav
WHERE
upd.update_id = fav.item_id
AND
fav.uid = 118697835834
AND fav.type=0
) as favorited_update
FROM
updates AS upd
LEFT JOIN
users AS usr
ON upd.uid = usr.uid
WHERE
upd.deleted=0
AND
(
upd.uid=118697835834
OR EXISTS
(
SELECT *
FROM
subscribers AS sub
WHERE
upd.uid = sub.suid
AND sub.uid = 118697835834
)
)
)
UNION
(
SELECT
topic.uid,
topic.tid,
topic.title,
topic.body,
topic.total_likes,
topic.total_replies,
topic.views,
topic.date,
usr.username AS `username`,
usr.profile_picture AS `profile_picture`
,(
SELECT
COUNT(lik.id)
FROM
likes as lik
WHERE
topic.update_id = lik.item_id
AND
lik.uid = 118697835834
AND lik.type=1
) as liked_update,
(
SELECT
COUNT(fav.id)
FROM
favorites as fav
WHERE
topic.update_id = fav.item_id
AND
fav.uid = 118697835834
AND fav.type=1
) as favorited_update
FROM
topics AS topic
LEFT JOIN
users AS usr
ON topic.uid = usr.uid
WHERE
topic.deleted=0
AND
(
topic.uid=118697835834
OR EXISTS
(
SELECT *
FROM
subscribers AS sub
WHERE
topic.uid = sub.suid
AND sub.uid = 118697835834
)
)
)
ORDER BY date DESC
我已经加入了UNION (SELECT)
和查询需要永远载入最后它停止返回blank page
...
除去UNION (SELECT)
工作正常...
首先,为什么每个列使用缩写别名?这只会让阅读变得更加困难。无论如何,最终的EXISTS条款的想法是什么?您正在使用更新和主题之间的联合,但只能根据更新选择主题。更新和主题将位于结果集中的单独行上,因此,如果您未从更新中进行选择,则更新上存在更新可能不是一个好主意。发动机可能会执行大量的重新驱动循环。 – Tobsey 2012-03-08 12:08:29
我大概可以将EXISTS子句更改为LEFT JOIN ...编辑:我只是删除所有缩短的别名,它似乎加载,但它不加载主题...只是更新... – fxuser 2012-03-08 12:11:23
应该'WHERE'条款那'EXISTS'be' topic.uid = sub.uid AND sub.uid = 118697835834'代替'upd.uid = sub.suid AND sub.uid = 118697835834' – Tobsey 2012-03-08 12:17:30