繁体   English   中英

SQL:从表1中选择行并存在(表2中的行)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM