[英]please how can i combine the result from this multiple SELECT statements into a single result set?
下面給出的是架構和各個select語句。 但是,我想檢索各種查詢的所有結果。 我如果
// SCHEMA ..這是數據庫模式
CREATE TABLE `orgs` (
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`org_name` varchar(250) NOT NULL,
UNIQUE (org_name)
)
CREATE TABLE `orgs_relation` (
`org_id` int(10) UNSIGNED NOT NULL,
`parent_org_id` int(10) UNSIGNED NOT NULL,
CONSTRAINT org_relation_pair UNIQUE (org_id, parent_org_id)
)
#// Get parents
SELECT parent_org_id, orgs.org_name as org_name, "parent" as parent FROM `orgs_relation`
JOIN orgs ON orgs_relation.parent_org_id = orgs.id
WHERE org_id = (SELECT id FROM orgs WHERE org_name='Black Banana')
ORDER BY org_name ASC
#// Get chidren
SELECT org_id, orgs.org_name as org_name, "children" as children FROM `orgs_relation`
JOIN orgs ON orgs_relation.org_id = orgs.id
WHERE parent_org_id = (SELECT id FROM orgs WHERE org_name='Black Banana')
ORDER BY org_name ASC
#// Get sisters
SELECT DISTINCT or2.org_id AS sister_id, org_name, "sisters" as sisters FROM `orgs_relation` AS or1
JOIN orgs_relation AS or2 ON or1.parent_org_id = or2.parent_org_id
JOIN orgs ON or2.org_id = orgs.id
WHERE or1.org_id = (SELECT id FROM orgs WHERE org_name='Black Banana')
ORDER BY org_name ASC
我目前正在使用以下方法,但無法正常工作:
app.get("/api/orgs/all/:id", function(req, res){
var p = req.params.id;
console.log(p);
var daughtersQuery = "SELECT org_id, orgs.org_name as org_name, 'daughters' as daughters FROM `orgs_relation` JOIN orgs ON orgs_relation.org_id = orgs.id WHERE parent_org_id = (SELECT id FROM orgs WHERE org_name = 'Black Banana')";
var parentQuery = "SELECT parent_org_id, orgs.org_name as org_name, 'parent' as parent FROM `orgs_relation`JOIN orgs ON orgs_relation.parent_org_id = orgs.id WHERE org_id = (SELECT id FROM orgs WHERE org_name= 'Black Banana')";
var sistersQuery = "SELECT DISTINCT or2.org_id AS sister_id, org_name, 'sisters' as sisters FROM `orgs_relation` AS or1 JOIN orgs_relation AS or2 ON or1.parent_org_id = or2.parent_org_id JOIN orgs ON or2.org_id = orgs.id WHERE or1.org_id = (SELECT id FROM orgs WHERE org_name= 'Black Banana')";
var q = "SELECT DISTINCT id, org_name, org_id, parent_org_id from (" +
daughtersQuery + " UNION ALL " +
parentQuery + " UNION ALL " +
sistersQuery + " ) a ORDER ALL org_name asc";
// console.log(q);
connection.query(q, function (error, results) {
if (error) throw error;
// console.log(results);
res.send(results);
});
});
我假設您正在使用node-mysql 。 文檔狀態:
出於安全原因,禁用了對多條語句的支持(如果值未正確轉義,則允許進行SQL注入攻擊)。
要使用此功能,必須為連接啟用它:
var connection = mysql.createConnection({multipleStatements: true});
啟用后,您可以通過用分號分隔每個語句來對多個語句執行查詢;
。 結果將是每個語句的數組。
connection.query('SELECT ?; SELECT ?', [1, 2], function(err, results) {
if (err) throw err;
// `results` is an array with one element for every statement in the query:
console.log(results[0]); // [{1: 1}]
console.log(results[1]); // [{2: 2}]
});
var q = "SELECT org_id, orgs.org_name as org_name, 'daughters' as daughters FROM `orgs_relation` JOIN orgs ON orgs_relation.org_id = orgs.id WHERE parent_org_id = (SELECT id FROM orgs WHERE org_name = 'Black Banana');SELECT parent_org_id, orgs.org_name as org_name, 'parent' as parent FROM `orgs_relation`JOIN orgs ON orgs_relation.parent_org_id = orgs.id WHERE org_id = (SELECT id FROM orgs WHERE org_name= 'Black Banana');SELECT DISTINCT or2.org_id AS sister_id, org_name, 'sisters' as sisters FROM `orgs_relation` AS or1 JOIN orgs_relation AS or2 ON or1.parent_org_id = or2.parent_org_id JOIN orgs ON or2.org_id = orgs.id WHERE or1.org_id = (SELECT id FROM orgs WHERE org_name= 'Black Banana')";
connection.query(q, function (error, results) {
if (error) throw error;
// console.log(results[0]);
// console.log(results[1]);
// console.log(results[2]);
res.send(results);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.