私のSQLクエリ:SQL呼び出しsubquery2でsubquery1からテーブル
SELECT
upd.*,
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
)
OR EXISTS
(
SELECT
*
FROM
topics as topic
WHERE
upd.uid = topic.uid
AND sub.uid = 118697835834
)
)
ORDER BY upd.date DESC
LIMIT 0, 15
sub
はその唯一のsubquery1であるためsubquery2に呼び出すことがカントので、私はエラーを取得しています...どのように私はそれを呼び出すことができることを確認することができますsubquery2にも同様に? FROM
で上記の加入者をLEFT JOINする必要がありますか?
Unknown column 'sub.uid' in 'where clause'
はい、テーブルに参加する必要があります。クエリ全体を投稿する場合は、クエリを最適化し、クエリを短くしてより速く実行するためにできることが他にもあることを賭けています。 – Travesty3
更新された質問 – fxuser
2番目の 'exists'がトピックとサブスクライバをチェックすると、これはサブスクライバのみをチェックし、サブスクライバのみをチェックする以前の' exists'と冗長ではありません。ブロックはすでに真実ですか? –