从视图和表中选择列并在sql中

时间:2016-12-23 11:16:37

标签: sql sql-server view

我有两张桌子和一张视图。一个表格为products,另一个表格为suppliers,视图为v_orders_customers

products包含以下列:

  • product_id(主键)
  • product_price
  • PRODUCT_NAME

customers表格包含以下列:

  • CUSTOMER_ID
  • 如first_name

视图v_orders_customers包含以下列:

  • ORDER_ID
  • CUSTOMER_ID
  • order_date的
  • order_quantity
  • product_id

我想要的查询是:

"为价值大于$ 8,000的订单选择以下信息(客户名称,订单号,订单日期,订单值)。

提示:订单的价值是订单数量上产品单位价值的乘积。使用v_orders_customers"。

我的问题是如何从表格和视图中获取列,并且也可以相乘以进行查询。

编辑:这是我的尝试但是没有完成,因为我不知道如何继续..

SELECT customers.first_name,v_orders_customers.order_id,v_orders_customers.order_date,(v_orders_customers.order_quantity * product_price) FROM VIEW v_orders_customers,TABLE customers,TABLE products WHERE (...);

1 个答案:

答案 0 :(得分:0)

首先,不要使用隐式连接(在from子句中有多个表) - 它们已经被弃用了很多年,被认为是一种不好的做法。相反,你应该明确加入。对于where子句 - 您可以在其中使用表达式,就像在select列表中一样:

SELECT c.first_name,
       v.order_id,
       v.order_date,
       (v.order_quantity * p.product_price) AS total_price
FROM   customers c
JOIN   v_orders_customers v ON v.customer_id = c.customer_id
JOIN   products p ON p.product_id = v.product_id
WHERE  v.order_quantity * p.product_price > 8000