【问题标题】:SQL View between two tables两个表之间的 SQL 视图
【发布时间】:2015-08-13 07:27:18
【问题描述】:

我的数据库中有两个表,我想创建一个包含所有信息的视图。 一张表保存每个订单的详细信息,另一张表保存这些订单的一般内容。

以下是表格的详细信息:

OrderRecords_table

OrderID|CustomerCode|Customer|Address|PickupLocation|TotalPrice|CreateTime
C00001 |AB001       |ABC Co. |CA     | Store        |5         |2015-01-01 
C00002 |BC002       |BC Co.  |CA     | store        |5.5       |2015-01-01 

OrderDetails_table

OrderID|Company|ItemName|Amount|unitPrice|CreateTime         
C00001 |ABC Co.|apple   |1     |2        |2015-01-01 01:01:01
C00001 |ABC Co.|Orange  |3     |3        |2015-01-01 01:01:01
C00002 |BC Co. |candy   |5     |1        |2015-01-01 03:01:01
C00002 |BC Co. |pan     |1     |2        |2015-01-01 03:01:01
C00002 |BC Co. |ruler   |2     |2.5      |2015-01-01 03:01:01

类似这样的东西,在 OrderRecords 上,orderID 是唯一的,orderDetails 对每个商品都有一条记录。

现在我正在创建一个需要两个表中的详细信息的方法,如果我每次都尝试跨表选择项目,那会非常混乱,我想创建一个包含两个表详细信息的视图。

我希望它如下所示:

查看 V

OrderID|Company|CustomerCode|Address|ItemName|Amount|UnitPrice|CreateTime
C00001 |ABC Co.|AB001       |CA     |apple   |1     |2        |2015-01-01
C00001 |ABC Co.|AB001       |CA     |orange  |3     |3        |2015-01-01
C00002 |BC Co. |BC002       |CA     |candy   |5     |1        |2015-01-01
C00002 |BC Co. |BC002       |CA     |pan     |1     |2        |2015-01-01
C00002 |BC Co. |BC002       |CA     |ruler   |2     |2.5      |2015-01-01

创建此类视图的最佳方法是什么?谢谢

【问题讨论】:

  • 查看mysql inner join,在您的情况下,您将从两个表中加入OrderID
  • @AbhikChakraborty 感谢您的编辑,我会看看内部连接

标签: mysql sql select view


【解决方案1】:

您可以使用连接:

CREATE VIEW v AS
SELECT orec.OrderID, 
       od.Company,
       orec.CustomerCode,
       orec.Address,
       od.ItemName,
       od.Amount,
       od.unitPrice,
       od.CreateTime
FROM   OrderRecords orec
JOIN   OrderDetails od ON orec.OrderId = od.OrderId

【讨论】:

  • 感谢您的回复,但对于最后一部分 ''FROM OrderRecords or JOIN OrderDetails od ON or.OrderId = od.OrderId'' 做什么或做什么,因为它在 mysql 上显示为错误
  • 我被or 的首字母缩略词OrderRecords 迷住了,我什至没有意识到我使用的是保留字。已修复,请参阅我编辑的答案。
  • 我在这里很困惑'FROM OrderRecords orec' 我认为 orec 与您的答案中的 OrderRecords 相同?
  • @benjiWong yes - orec 是一个别名,这样我就不必每次都写很长的OrderRecords
  • 如果我想用“where”,我应该把它们放在哪里?就像我只想选择特定的 CreateTime 范围
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 2015-02-11
相关资源
最近更新 更多