Question

In the below query, I am trying to SELECT Destination_City.Name_, and to do so need to join Destination_City.Destination_City_ID with Contract_Items.Destination_City_ID, however the latter table is already inner joined with the Contract table.

SELECT 
    contract.Description,
    ---Destination_City.Name_,
    contract_type.type AS 'Contract Type',
    contract.Tour_Summary AS 'Tour Name',
    employee.First_Name AS 'First Name',
    employee.Last_name AS 'Last Name',
    Currency_.Currency_Name AS 'Currency',
    contract_Items.twin AS 'Twin Rate',
    contract_items.Item_Rate AS 'Rate'

FROM 
    Contract
        INNER JOIN Employee 
            ON Contract.Contracted_By_Employee_Id = Employee.Employee_Id
        INNER JOIN Contract_Items
            ON Contract.Contract_ID = Contract_Items.Contract_ID
        INNER JOIN Currency_
            ON Contract.Currency_Id = Currency_.Currency_Id
        INNER JOIN Contract_Type
            ON Contract.Contract_Type_Id = contract_type.Contract_Type_Id

Essentially Table 2 needs to be joined to Table 3, but Table 2 is already joined to Table 1. I have tried a couple of different approaches but both have thrown errors, and I am not sure how to write up this query.

Was it helpful?

Solution

It should be no problem to get your Name_ column with joining the DESTINATION_CITY table:

SELECT 
    contract.Description,
    Destination_City.Name_,
    contract_type.type AS 'Contract Type',
    contract.Tour_Summary AS 'Tour Name',
    employee.First_Name AS 'First Name',
    employee.Last_name AS 'Last Name',
    Currency_.Currency_Name AS 'Currency',
    contract_Items.twin AS 'Twin Rate',
    contract_items.Item_Rate AS 'Rate'
FROM 
    Contract
        INNER JOIN Employee 
            ON Contract.Contracted_By_Employee_Id = Employee.Employee_Id
        INNER JOIN Contract_Items
            ON Contract.Contract_ID = Contract_Items.Contract_ID
        INNER JOIN Currency_
            ON Contract.Currency_Id = Currency_.Currency_Id
        INNER JOIN Contract_Type
            ON Contract.Contract_Type_Id = contract_type.Contract_Type_Id
        INNER JOIN Destination_City
            ON Destination_City.Destination_City_ID = Contract_Items.Destination_City_ID

Please note that the order of the join operations is irrelevant, if you have inner joins only. It's only required that one of the tables is already joined before.

OTHER TIPS

this?

FROM Contract
    INNER JOIN Employee 
        ON Contract.Contracted_By_Employee_Id = Employee.Employee_Id
    INNER JOIN Contract_Items
        ON Contract.Contract_ID = Contract_Items.Contract_ID
    INNER JOIN Destination_City ON
        Destination_City.Destination_City_ID = Contract_Items.Destination_City_ID
    INNER JOIN Currency_
        ON Contract.Currency_Id = Currency_.Currency_Id
    INNER JOIN Contract_Type
        ON Contract.Contract_Type_Id = contract_type.Contract_Type_Id
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top