2

データベースに次のテーブルがあります。

ツーリスト - これが最初のテーブルです

    Tourist_ID - primary key
Extra_Charge_ID - foreign key

name...etc...

追加料金

    Extra_Charge_ID - primmary key 
   Excursion_ID - foreign key

    Extra_Charge_Description

Tourist_Extra_Charges

Tourist_Extra_charge_ID

Extra_Charge_ID - foreign key

Tourist_ID - foreign key

予約

Reservation_ID - primary key

.....

ツーリスト_予約

Tourist_Reservation_ID

Reservation_ID - foreign key

Tourist_ID - foreign key

これが私の例です: 私はReservaton_ID- 27 の予約をしています。この予約にはTourist_ID- 86 と- Tourist_ID87の 2 人の観光客がいます。Extra_Charge_IDExtra_charge_ID

SQLクエリと観光客の名前とID、そしてすべての追加料金を作成することは可能ですか

したがって、出力は次のようになります。

Tourist_ID : 86  Name:John   Extra_Charge_ID - 7 Extra_Charge_ID - 11


Tourist_ID: 87  Name:Erika 

Extra-Charge_ID:10

(Reservation_ID = 27 のすべての観光客の extra_charge_description を取得するために作成したクエリを次に示しますが、変更方法がわかりません。上記の名前を取得するには)

Select EXTRA_CHARGES.Extra_Charge_Description,TOURIST_EXTRA_CHARGES.Tourist_ID FROM EXTRA_CHARGES

         INNER JOIN TOURIST_EXTRA_CHARGES on EXTRA_CHARGES.Extra_Charge_ID = TOURIST_EXTRA_CHARGES.Extra_Charge_ID

 INNER JOIN TOURIST_RESERVATION on TOURIST_EXTRA_CHARGES.Tourist_ID = TOURIST_RESERVATION.Tourist_ID
          INNER JOIN  RESERVATIONS on RESERVATIONS.Reservation_ID = TOURIST_RESERVATION.Reservation_ID
          where RESERVATIONS.Reservation_ID=27
4

3 に答える 3

2

あなたのデータベーススキーマは私には完全に明確ではありませんが、次のように Tourist_Extra_Charges テーブルを介して、Tourist テーブルの観光客をEXTRA_CHARGESテーブル追加料金にリンクできるようです。

SELECT  T.Tourist_ID
        ,T.Tourist_Name
        ,EC.Extra_Charge_ID
        ,EC.Extra_Charge_Description
FROM    Tourist AS T
INNER JOIN Tourist_Extra_Charges AS TEC ON T.Tourist_ID= TEC.Tourist_ID
INNER JOIN EXTRA_CHARGES AS EC ON TEC.Extra_Charge_ID = EC.Extra_Charge_ID;

編集

Reservation_IDでフィルタリングできるようにするには、次のようにTourist_ReservationsReservationsテーブルも結合する必要があります。

SELECT  T.Tourist_ID
        ,T.Tourist_Name
        ,EC.Extra_Charge_ID
        ,EC.Extra_Charge_Description
FROM    Tourist AS T
INNER JOIN Tourist_Extra_Charges AS TEC ON T.Tourist_ID= TEC.Tourist_ID
INNER JOIN EXTRA_CHARGES AS EC ON TEC.Extra_Charge_ID = EC.Extra_Charge_ID
INNER JOIN Tourist_Reservations AS TR ON T.Tourist_ID = TR.Tourist_ID
INNER JOIN Reservations AS R ON TR.Reservation_ID = R.Reservation_ID
WHERE   R.Reservation_ID = 27;

データベース スキーマについては、フィールドExtra_Charge_IDがTouristテーブルに必要ないことに注意してください。すでにTourist_Extra_Chargesテーブルを介して観光客を追加料金にリンクしています。このような二重接続を行うと、データの健全性が損なわれる可能性があります。

于 2013-07-24T08:14:12.963 に答える