这是我的查询:
$q = $this->dao->prepare('
SELECT wishlists.id, wishlists.title, wishlists.comment,
wishlists.date, users.name, users.username,
wishlist_following.id as wid
FROM wishlists
LEFT JOIN users ON wishlists.user = users.id
LEFT JOIN wishlist_following ON wishlist_following.user_id = 25
AND wishlist_following.wishlist_id = wishlists.id
WHERE users.username = :username
ORDER BY wishlists.date DESC
');
其中“25”是访问者的 ID。我的表中有一个“wid”键,如果当前用户(id:25)没有关注返回的愿望 list ,则该键为空。
这是我的数据库和目标:
用户(ID、用户名等)
Whislists (id, title, comment, user_id) -> 与用户表的多对一关系
wishlist_following (id, user_id, Wishlist_id) -> 与用户表的多对多关系
我的目标:我想从用户的个人资料中获取愿望 list (从 URL 中提取用户名),并了解每个愿望 list 当前用户(访问者)是否关注此列表。
这是最好的方法吗?
最佳答案
此查询
SELECT w.title
FROM users u, wishlists w, wishlist_following wf
WHERE u.id = 1 -- visitor
AND w.user_id = 3 -- viewed profile
AND wf.user_id = u.id
AND wf.wishlist_id = w.id
应返回愿望 list ,后跟来自 id=3 的用户个人资料的访客 (id 1)
好的,我明白了,试试这个:
SELECT w.title, wf.id
FROM users u
LEFT JOIN wishlists w ON w.user_id = 3 -- viewed profile
LEFT JOIN wishlist_following wf ON wf.wishlist_id = w.id
WHERE u.id = 1 -- visitor
简化版本:
SELECT w.title, wf.id
FROM users u, wishlists w
LEFT JOIN wishlist_following wf ON wf.wishlist_id = w.id
WHERE u.id = 1 -- visitor
AND w.user_id = 3 -- viewed profile
关于php - mysql : select rows from table 1 and test if rows exists in table 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21678262/