2013-04-20 23 views
0

對於連接,聯盟,ON-s等我還不是很有經驗 但我有一所學校,我需要從兩個 表中選擇客戶名稱,貴賓和常規客戶。訂閱系統上的sql連接或聯合查詢

進出口試圖左右逢源但遺憾的是沒有真正的工作: // 1

SELECT Hotel_Rooms.Book_From, Hotel_Rooms.Book_To, Hotel_Rooms.[Book_To]-[Book_From] AS Booked_Days, Hotel_Rooms.[Price_Per_Night]*[Booked_Days] AS Price, Reg_Customers.Cust_name 
FROM Reg_Customers 
UNION 
SELECT Hotel_Rooms.Book_From, Hotel_Rooms.Book_To, Hotel_Rooms.[Book_To]-[Book_From] AS Booked_Days, Hotel_Rooms.[Price_Per_Night]*[Booked_Days] AS Price, Vip_Customers.Cust_name 
FROM Vip_Customers 
INNER JOIN Hotel_Rooms ON Reg_Customers.Cust_ID = Hotel_Rooms.Cust_ID && Vip_Customers.Cust_ID = Hotel_Rooms.Cust_ID 
ORDER BY Hotel_Rooms.[Price_Per_Night]*[Booked_Days] DESC; 

// 2

SELECT Hotel_Rooms.Book_From, Hotel_Rooms.Book_To, Hotel_Rooms.[Book_To]-[Book_From] AS Booked_Days, Hotel_Rooms.[Price_Per_Night]*[Booked_Days] AS Price, Reg_Customers.Cust_name, Vip_Customers.Cust_name 
FROM Reg_Customers, Vip_Customers 
INNER JOIN Hotel_Rooms ON Reg_Customers.Cust_ID = Hotel_Rooms.Cust_ID && Vip_Customers.Cust_ID = Hotel_Rooms.Cust_ID 
ORDER BY Hotel_Rooms.[Price_Per_Night]*[Booked_Days] DESC; 

查詢沒有工作選擇,正確的連接表。你能幫忙嗎? 表計劃,如果這些幫助

客房{Rooms_ID,CUST_ID,Room_Capacity,可用,Book_Time,Book_Price_Per_Night,Book_From,Book_To}

熟客{CUST_ID,CUST_NAME,Cust_Phone,卡斯特卡} VIP {CUST_ID,CUST_NAME ,Cust_Phone,Cust卡}

謝謝。 如果你能提供一個工作查詢,那麼#1或#2版本會很棒, 謝謝。

回答

0

你的第二種方法更好,但是你犯了一個錯誤。您可以連接的表是這樣的:

from table1, table2 
where table1.id = table2.id 

或這樣的(這是更好)

from table1 join table2 on table1.id = table2.id 

,但你不能在同一個查詢中使用這兩種技術。這就是你的第二個例子。

編輯從這裏開始

再次閱讀您的問題,聯合查詢是一個更好的辦法。但是,您在這裏犯了兩個錯誤:

FROM Vip_Customers 
INNER JOIN Hotel_Rooms ON Reg_Customers.Cust_ID = Hotel_Rooms.Cust_ID 
&& Vip_Customers.Cust_ID = Hotel_Rooms.Cust_ID 
ORDER BY Hotel_Rooms.[Price_Per_Night]*[Booked_Days] DESC; 

第一個錯誤是邏輯錯誤。您正在從VIP客戶中進行選擇,但是需要從常規客戶表中加入。第二個錯誤是語法。將「& &」替換爲「和」。沒有我知道的RDBMS支持「& &」。

+0

嘿感謝您的回答,林感覺有點啞儘管如此,現在居然林加盟3桌,貴賓客戶,普通客戶和客房,我如何使用您的方法實現它?謝謝。 – inrob 2013-04-20 22:55:02

+0

或更好的是,考慮我發佈的代碼,是否有任何方法可以使用該代碼提出解決方案。如果不是無後顧之憂,我不想困擾你。不管怎麼說,還是要謝謝你。 – inrob 2013-04-20 22:56:15

0

不知道你的數據庫是一個有點棘手,但基於您提供一下這個聯盟/排序可能工作

{ 
    SELECT hr.Book_From, hr.Book_To, hr.[Book_To]-[Book_From] AS Booked_Days, hr.[Price_Per_Night]*[Booked_Days] AS Price, rc.Cust_name 
    FROM Reg_Customers rc 
    LEFT JOIN Hotel_Rooms AS hr ON rc.Cust_ID = hr.Cust_ID 
} UNION { 
    SELECT hr.Book_From, hr.Book_To, hr.[Book_To]-[Book_From] AS Booked_Days, hr.[Price_Per_Night]*[Booked_Days] AS Price, vc.Cust_name 
    FROM Vip_Customers vc 
    LEFT JOIN Hotel_Rooms AS hr ON vc.Cust_ID = hr.Cust_ID 
} 
ORDER BY [Price_Per_Night]*[Booked_Days] DESC;