2011-05-17 84 views
3

今天我的问题是我将如何去创建一个使用两个以上表的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` 

感谢您的时间!

+0

你只是......加入更多的表格。其他表与前两者没有关系吗?我错过了什么?另外,你不需要在MySQL查询中的每个表和字段名称周围反引号;他们只是逃避关键字。 – 2011-05-17 23:53:16

+0

难道你不能继续加入?我不明白什么是错的。有错误吗? – 2011-05-17 23:58:11

回答

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 

在上述方法中,第一和第二表关联,并且第一和第三表关联。如果必须涉及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 
+2

现在我希望我发布该答案而不是评论。至少在那里反对。 ; P – 2011-05-18 00:00:44

+0

谢谢你,迈克尔! – kstev 2011-05-18 00:01:50

+0

也,我确实有一个名为tbl_products的表;) – kstev 2011-05-18 00:05:33

相关问题