mysql - 我如何从 sql 中的 select 语句返回字符串字段

标签 mysql node.js express

这是问题的架构:

CREATE TABLE organization (
        id INT AUTO_INCREMENT PRIMARY KEY,
        org_name VARCHAR(255) UNIQUE NOT NULL,
        parent_id INT
    );

ALTER TABLE organization 
ADD CONSTRAINT  FOREIGN KEY (parent_id)
REFERENCES organization(id);

我想在查询选择中返回一个字符串字段..例如,当检索所有数据时,我希望它具有relationship_type:但是,我的架构中没有relationship_type字段; 例如这样的事情:

[{ 
"relationship_type": "parent", 
"org_name": "Banana tree" 
}, { 
"relationship_type": "parent", 
"org_name": "Big banana tree" 
}, { 
"relationship_type": "sister", 
"org_name": "Brown Banana" 
}, { 
"relationship_type": "sister", 
"org_name": "Green Banana" 
}, { 
"relationship_type": "daughter", 
"org_name": "Phoneutria Spider" 
}, { 
"relationship_type": "sister", 
"org_name": "Yellow Banana" 
}]

从此代码:

app.get("/api/listAll/all/:id", function(req, res){
       var daughtersQuery = "select * from organization  where parent_id = " + req.params.id;
       var parentQuery = "select * from organization  where id = (select parent_id from organization where id = " + req.params.id + ")";   
       var sistersQuery = "select * from organization  where parent_id = (select parent_id from organization where id = " + req.params.id + ") && id != " + req.params.id;

       var q = "select distinct id, org_name, parent_id from (" +
                        daughtersQuery + " union all " +
                        parentQuery + " union all " +
                        sistersQuery + " ) a order by org_name asc";
      //  console.log(q);
         connection.query(q, function (error, results) {
              if (error) throw error;
          // console.log(results);
          res.send(results);
        });
       //  var page_no = req.query.page;
        // console.log(page_no);
});

app.listen(8080, function() {
    console.log("Server Running");
});

我目前正在检索这个.. null 是根(父级):

[
  {
    "id": 1,
    "org_name": "black banana",
    "parent_id": null
  },
  {
    "id": 3,
    "org_name": "green banana",
    "parent_id": 2
  }
]

最佳答案

修改您的查询语句以包含 relationship_type 字段:

var daughtersQuery = "select *, 'daughter' as relationship_type from organization  where parent_id = " + req.params.id;
var parentQuery = "select *, 'parent' as relationship_type from organization  where id = (select parent_id from organization where id = " + req.params.id + ")";   
var sistersQuery = "select *, 'sister' as relationship_type from organization  where parent_id = (select parent_id from organization where id = " + req.params.id + ") && id != " + req.params.id;

var q = "select distinct id, relationship_type, org_name, parent_id from (" +
                    daughtersQuery + " union all " +
                    parentQuery + " union all " +
                    sistersQuery + " ) a order by org_name asc";

关于mysql - 我如何从 sql 中的 select 语句返回字符串字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44033009/

相关文章:

javascript - 嵌套包含在sequelize中?

PHP MySQL设置/配置表调用值

mysql - MySQL 查询中的复杂 WHERE 子句 - [在 MySQL 中使用 VLOOKUP]

php - 如何从单个字段中查找超时和超时并将其值提取到 SQL 中的另一个表

html - Jade 如何处理 src 属性?为什么/javascripts直接进入文件夹而不是/../public/javascripts?

javascript - 如何在node js中使用jimp在多个图像上打印不同的文本?

javascript - 使用 Node.js 的 JSON 数据

javascript - 是否可以在整个 Node Express 服务器上定义一个全局变量?

javascript - 用express更新了文档

node.js - Mongodb 只获取符合条件的子文档