2017-05-17 10 views
0

でselect文から文字列フィールドを返すことが問題のスキーマです:私は、クエリの選択で文字列フィールドを返すようにしたいは、どのように私はここに、SQL

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 
    } 
] 

答えて

0

はあなたのクエリを変更して、たとえば、このような 何か明細書に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"; 
+0

他人に知られるようにあなたの問題を解決した場合、回答を受け入れてアップマークしてマークすることを忘れないでください;) – wogsland

関連する問題