【问题标题】:How to do subquery with multiple columns as alias如何使用多列作为别名进行子查询
【发布时间】:2019-02-19 05:43:07
【问题描述】:

我有两个 SQL 表,“Debits”和“Debits_Line_Items”。我想对“Debits”表运行 SQL 查询,其中每个借记记录都包含“Debits_Line_Items”表中相应记录的列表,该列表应与 CartID 值匹配。

这是我尝试过的,它产生了“lineItems”列未知的错误:

SELECT 
    CartID AS cartId,
    TotalCost AS totalCost,
    lineItems
FROM Debits
LEFT JOIN 
    (
        SELECT 
            Price AS cost,
            Quantity AS quantity,
            TotalPrice as total 
        FROM Debits_Line_Items
        WHERE UserID = 9902
    ) AS lineItems
ON Debits.CartID = lineItems.CartID
WHERE UserID = 9902

这就是我所希望的:

   [
      {
        cartId: 3225,
        totalCost: 212,
        lineItems: [
          {
             cost: 32,
             quantity: 1, 
             total: 32
          }, 
          {
             cost: 60,
             quantity: 3, 
             total: 180
          },          
       },
       {
        cartId: 3226,
        totalCost: 75,
        lineItems: [
          {
             cost: 15,
             quantity: 5, 
             total: 75
          }         
       }
    ]

【问题讨论】:

  • 您能提供一些示例数据吗?你想从 mysql 中获取 json 字符串吗?
  • 你的mysql版本是多少?
  • 能分享一下这里用到的表的表结构吗?
  • 您尚未从表Debits_Line_Items 中选择CartID 列。那么只有你可以使用ON Debits.CartID = lineItems.CartID
  • lineitems 是子查询别名而不是列名。您的选择应按名称 (lineitmes.) 或所有 lineitems.* 引用所有列名

标签: mysql sql join left-join


【解决方案1】:

试试这样的:

WITH lineItems(cost, quantity, total, CartID) AS (
     SELECT 
           Price AS cost,
           Quantity AS quantity,
           TotalPrice as total 
      FROM 
            Debits_Line_Items
      WHERE 
            UserID = 9902
)
SELECT 
      d.CartID AS cartId,
      d.TotalCost AS totalCost,
      lineItems.*
FROM  
      Debits d
LEFT JOIN lineItems l
  ON d.CartID = l.CartID
WHERE 
      d.UserID = 9902

如果有帮助,请告诉我。始终最好与 reextester 链接。然后我们可以使用一些示例数据为您验证代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多