0

結合、組合、ON-s などに関してはあまり経験がありませんが、学校があり、vip と通常の顧客の 2 つのテーブルから顧客名を選択する必要があります。

私は両方の方法を試していますが、残念ながら実際には何も機能しません: //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, Available, Book_Time, Book_Price_Per_Night, Book_From, Book_To }

通常の顧客 {Cust_ID, Cust_Name, Cust_Phone, Cust Card} vip {Cust_ID, Cust_Name, Cust_Phone, Cust Card}

ありがとうございました。#1 または #2 のいずれかのバージョンの実用的なクエリを提供できれば、ありがとうございます。

4

2 に答える 2

0

2番目のアプローチの方が優れていますが、間違いを犯しています。次のようにテーブルを結合できます。

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

またはこのように(どちらが優れています)

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

ただし、同じクエリで両方の手法を使用することはできません。それがあなたの2番目の例にあります。

ここから編集

あなたの質問をもう一度読んでください。ユニオンクエリはより良いアプローチです。ただし、ここで 2 つの間違いを犯しました。

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 顧客から選択していますが、通常の顧客テーブルから参加しています。2 番目の間違いは構文にあります。「&&」を「and」に置き換えます。私が知っている RDBMS では "&&" をサポートしていません。

于 2013-04-20T22:47:48.217 に答える
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;
于 2013-04-20T23:05:27.293 に答える