我有一个数据库,其中有两个表tableA, tableB
。现在,对于tableA
中的每个主要ID,tableB
中可能有多行。
表A 主键(ServiceOrderId)
+----------------+-------+-------+-------------+
| ServiceOrderId | Tax | Total | OrderNumber |
+----------------+-------+-------+-------------+
| 12 | 45.00 | 347 | 1011 |
+----------------+-------+-------+-------------+
表B 外键(ServiceOrderId)
+----+-------------+---------------------+----------+-------+------+----------------+
| Id | ServiceName | ServiceDescription | Quantity | Price | Cost | ServiceOrderId |
+----+-------------+---------------------+----------+-------+------+----------------+
| 39 | MIN-C | Commercial Pretreat | NULL | 225 | 23 | 12 |
+----+-------------+---------------------+----------+-------+------+----------------+
| 40 | MIN-C | Commercial Pretreat | NULL | 225 | 25 | 12 |
+----+-------------+---------------------+----------+-------+------+----------------+
是否有一种方法可以将值作为具有单行tableA的多行tableB的数组获取。因为当我保存到数据库时,我使用临时表来保存具有单行tableA的多行tableB。
查询我正在使用
SELECT
ordr.*,
info.*
FROM
tblServiceOrder as ordr
JOIN
tblServiceOrderInfo as info ON ordr.ServiceOrderId = info.ServiceOrderId
但是上面的查询为每个ServiceOrderId
提供了两行。我正在使用节点api来获取数据。我想要类似的东西;
Object:{
objectA:{id:12,tax:45.00:total:347,ordernumber:1011},
objectB:[
{id:39,servicename:'MIN-C',description:'Commercial Pretreat',Quantity :NULL,Price:225,Cost:23,ServiceOrderId:12 },
{id:40,servicename:'MIN-C',description:'Commercial Pretreat',Quantity :NULL,Price:225,Cost:25,ServiceOrderId:12}
]
}
答案 0 :(得分:0)
有几种解决方案。第一个是使用SELECT,但是添加了ORDER BY ServiceOrderID,当数据转换为object时,只在循环中使用第一行,从 ordr 表中为新的ServiceOrderId添加并添加每一行来自 info 表的数据。
其他可能性是仅从 ordr 表中选择数据,并且每行都可以通过 info 表中的ServiceOrderId进行另一次选择。此解决方案不应用于大型表。