【问题标题】:How correctly execute sql query (node.js + express)如何正确执行 sql 查询(node.js + express)
【发布时间】:2018-02-26 22:00:16
【问题描述】:

在数据库中,我有两个表:包含所有用户注册详细信息的用户和包含用户朋友关系数据的朋友(friend_one,friend_two 是引用 users.user_id 的外键),状态(0 - 期望,1 - 拒绝, 2 - 接受)和时间戳。 friend_one - 永远是友谊的发起者。女孩只能添加男孩的朋友,男孩只能添加女孩。因此,当我尝试获取 ID 为 5 的用户的朋友数量时,例如:

exports.amountOfFriends = function (req, res) {
    var user =  req.session.user,
    userId = req.session.session_id;
    if(userId == null){
       res.redirect("/login");
       return;
    }
   let sql = `SELECT COUNT(*) myCount FROM friends WHERE status = ? AND friends_one =? OR friends_two =? `;
   let post = [2, userId, userId];
    connection.query(sql, post, (err, result) => {
        if(err){
            console.log(err)
        }
        res.json(result);
        console.log(result[0].myCount);

    });

};

我得到值 - 2。但正确的值是 3。因为 id 为 5 的用户有三个朋友。请帮我解决这个问题。

【问题讨论】:

  • 你只是错过了括号
  • 当我添加括号时,我得到的值为零(
  • 你能在下面运行你的mysql吗?
  • 是的,我仍然得到零

标签: mysql node.js express


【解决方案1】:

您需要一个 () 围绕两个 OR 条件

 `SELECT COUNT(*) myCount FROM friends
   WHERE status = ? AND ( friends_one =? OR friends_two =?) `;

【讨论】:

  • 我查了一下,还是零(
  • status,friend_one,friend_two ..???
  • @scaisEdge,friend_one 和朋友二是整数,状态是 ENUM ('0','1','2')
  • 我已经测试了我数据库中的代码并且工作正常.. 只是为了测试尝试执行等效查询SELECT COUNT(*) myCount FROM friends WHERE ( status = 2 AND friends_one =5) OR ( status = 2 AND friends_two 5) ;
  • 您确定您已连接到正确的数据源吗? .似乎您的表格没有预期的数据
猜你喜欢
  • 2019-05-10
  • 2015-04-17
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
相关资源
最近更新 更多