2015-03-19 5 views
1

Я пытаюсь выполнить запрос, чтобы найти самый дешевый пакет для Испании.SQL WHERE несколько столбцов

У меня проблема с моим «Где h.location =« Испания ». Мне нужна функция where, чтобы облегчить мои другие столбцы. Например: - e.location, t.location и f.location. Что бы все = 'Испания'

 SELECT p.*, (h.totalCost + e.totalCost + t.totalCost + f.totalCost) as 'Total Package Cost' FROM Package p 
     INNER JOIN hotels h ON h.hotelId = p.hotelId 
     INNER JOIN excursions e ON e.excursionId = p.excursionId 
     INNER JOIN transport t ON t.transportId = p.transportId 
     INNER JOIN flight f ON f.flightId = p.flightId 
    WHERE h.location = 'Spain' 

    ORDER BY (h.totalCost + e.totalCost + t.totalCost + f.totalCost) ASC 

Как это сделать?

+0

Это много таблиц, которые я обычно включал бы в общее табличное выражение, а затем выбирал бы это. – cchamberlain

ответ

2

Я бы рекомендовал делать это таким образом

WHERE h.location = 'Spain' 
AND e.location = h.location 
AND t.location = h.location 
AND f.location = h.location 

так что если вы хотите изменить переменная «Испания» (которая, как я предполагаю, будет переменной), вам нужно будет включить только в одном месте в вашем запросе.

+0

Спасибо, человек, который выглядит лучше. – user3545833

+1

Обратите внимание, еще несколько комментариев по вашему запросу. Вам не нужно постоянно указывать «внутреннее соединение»; это обычно предполагается. Вы можете просто использовать 'join', например' JOIN hotels h ON h.hotelId = p.hotelId'. Кроме того, поскольку вы создали псевдоним для своей переменной, в вашем заявлении по порядку вы можете просто использовать 'order by 'Total Package Cost''; вам не нужно пересчитывать эту переменную. – nomistic

2

если все они должны равняться «Испания», а затем просто добавить их в предложении WHERE с AND

WHERE h.location = 'Spain' 
    AND e.location = 'Spain' 
    AND t.location = 'Spain' 
    AND f.location = 'Spain' 
Смежные вопросы