代码之家  ›  专栏  ›  技术社区  ›  Derek Adair

mysql表结构

  •  0
  • Derek Adair  · 技术社区  · 15 年前

    我有一个mysql数据库,表结构如下:

    交易类型 :交易金额,交易ID,交易形式
    交易 :事务ID,时间戳
    购买 :事务\u id,项目\u id
    项目 :项目编号,客户编号

    这真是一个由两部分组成的问题(请告诉我是否应该将这些问题作为两个单独的问题发布)

    1)transactionType.transaction_表单本质上是一列,用于确定交易是现金还是信用。有没有办法将这两个查询结合起来?

    SELECT SUM(Transaction_Amount) 
    FROM Transaction_Type WHERE Transaction_Form = 'cash'
    

    SELECT SUM(Transaction_Amount) 
    FROM Transaction_Type WHERE Transaction_Form = 'credit'
    

    2)我需要根据使用的客户ID选择这两个交易金额。

    我唯一能想到的方法是:

    SELECT Transaction_Amount FROM Transaction_Type 
    JOIN Transaction ON Transaction_Type.Transaction_ID=Transaction.Transaction_ID
    JOIN Purchase ON Transaction.Transaction_ID = Purchase.Transaction_ID
    JOIN Items ON Purchase.Item_ID = Item.Item_ID
    WHERE Items.Client_ID = $clientId
    

    这显然不是所有的美丽…

    我需要在事务中添加客户机ID列吗?那是多余的吗?

    -谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   OMG Ponies    15 年前

    第1部分:

    用途:

    SELECT SUM(tt.transaction_amount)
      FROM TRANSACTION_TYPE tt
     WHERE tt.transaction_form IN ('cash', 'credit')
    

    …如果您希望将交易金额与两者合并。如果要将它们分开,请使用:

      SELECT tt.transaction_form,
             SUM(tt.transaction_amount)
        FROM TRANSACTION_TYPE tt
       WHERE tt.transaction_form IN ('cash', 'credit')
    GROUP BY tt.transaction_form
    

    第2部分:

    用途:

    SELECT tt.transaction_amount
      FROM TRANSACTION_TYPE tt
      JOIN PURCHASE p ON p.transaction_id = tt.transaction_id
      JOIN ITEMS i ON i.item_id = p.item_id
     WHERE i.client_id = ?
    
        2
  •  2
  •   rosscj2533    15 年前

    1:

    SELECT transaction_form, SUM(transaction_amount) 
    FROM transaction_type 
    GROUP BY transaction_form