[英]SQL : select rows from table 1 and exists (rows from table 2)
我试图选择行并向此选择添加一个布尔值,以测试另一个表中记录的多对多关系的存在。
这是我的代码:
$q = $this->dao->prepare('
SELECT wishlists.id, wishlists.title, wishlists.comment, wishlists.date, users.name, users.username
FROM wishlists
LEFT JOIN users ON wishlists.user = users.id
WHERE users.username = :username
ORDER BY wishlists.date DESC
');
$q->bindValue(':username', $user);
$q->execute();
这将返回一个包含我所有字段的表。 我想使用这种子查询在此表中添加一列:
SELECT EXISTS(SELECT 1 FROM wishlists_following WHERE wishlist_id = wishlists.id AND user_id = :current_user_id)
其中current_user_id是访问者的ID,$ user是当前用户的个人资料页面。
最好的方法是什么?
目的是获取有关愿望清单的所有信息,并了解当前用户是否正在关注此愿望清单(以便为返回的每个愿望清单显示跟随按钮)。
当您在心愿单和用户之间使用LEFT JOIN时,如果心愿单没有相关用户,则用户名和用户列将获得NULL值。
因此,我认为您不需要其他查询:只需要在获取第一个查询的结果后测试users.name列的无效性即可。
在第一个查询中检查名称或用户名字段-直接在查询中或在执行查询后在脚本中检查,如果为null,则表示用户未遵循愿望清单,否则。 关键是使用LEFT join允许这样做,而您已经拥有了它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.