一个视图中有多个表?

kst*_*tev 3 mysql relational-database

今天我的问题是如何在使用两个以上表的MySQL数据库中创建视图?

这是我的查询(它的工作原理)我不打算改变我当前的查询,主要是寻找一个关于这个主题的例子的好参考.

CREATE OR REPLACE VIEW vw_itemsPurchased AS
SELECT `tbl_buyers`.`fldPrimaryKey` as fldFKeyBuyer, `tbl_buyers`.`fldEmail` as fldBuyerEmail, `tbl_buyers`.`fldAddressStreet`, `tbl_buyers`.`fldAddressCity`, `tbl_buyers`.`fldAddressState`, `tbl_buyers`.`fldAddressZip`, `tbl_buyers`.`fldAddressCountry`, `fldPaymentCurrency`, `fldPaymentGross`, `fldPaymentStatus`, `fldReceiverEmail`, `fldTransactionId`
FROM `tbl_transactions` INNER JOIN `tbl_buyers`
ON `tbl_transactions`.`fldFKeyBuyer` = `tbl_buyers`.`fldPrimaryKey`
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间!

Mic*_*ski 6

要使用两个以上的表,只需继续添加JOIN语句即可连接外键.调整代码以添加虚构的第三个表tbl_products可能如下所示:

CREATE OR REPLACE VIEW vw_itemsPurchased AS (
  SELECT 
   tbl_buyers.fldPrimaryKey as fldFKeyBuyer, 
   tbl_buyers.fldEmail as fldBuyerEmail, 
   tbl_buyers.fldAddressStreet, 
   tbl_buyers.fldAddressCity, 
   tbl_buyers.fldAddressState, 
   tbl_buyers.fldAddressZip, 
   tbl_buyers.fldAddressCountry, 
   fldPaymentCurrency, fldPaymentGross, 
   fldPaymentStatus, 
   fldReceiverEmail,
   fldTransactionId,
   tbl_tproducts.prodid
 FROM 
   tbl_transactions 
    INNER JOIN tbl_buyers ON tbl_transactions.fldFKeyBuyer = tbl_buyers.fldP
    -- Just add more JOINs like the first one..
    JOIN tbl_products ON tbl_products.prodid = tbl_transactions.prodid
Run Code Online (Sandbox Code Playgroud)

在上述方法中,第一和第二表相关,第一和第三表相关.如果你必须关联table1->table2table2->table3,列出多个表FROM并将它们联系起来WHERE.以下只是为了说明而没有多大意义,因为您可能在同一个表中没有客户ID作为产品价格.

SELECT
  t1.productid,
  t2.price,
  t3.custid
FROM t1, t2, t3
WHERE 
  -- Relationships are defined here...
  t1.productid = t2.productid 
  AND t2.custid = t3.custid
Run Code Online (Sandbox Code Playgroud)

  • 现在我希望我发布这个答案而不是评论.至少把反引号取出来.,P (2认同)