2011-05-17 80 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