SQL,其中包含多个列

SQL,其中包含多个列,sql,Sql,我正在尝试实现一个查询,以查找到西班牙最便宜的包裹 我的“Where h.location=”西班牙”有问题。我需要where函数来方便我的其他专栏。例如:-e位置、t位置和f位置。那将是西班牙的全部 SELECT p.*, (h.totalCost + e.totalCost + t.totalCost + f.totalCost) as 'Total Package Cost' FROM Package p INNER JOIN hotels h ON

我正在尝试实现一个查询,以查找到西班牙最便宜的包裹

我的“Where h.location=”西班牙”有问题。我需要where函数来方便我的其他专栏。例如:-e位置、t位置和f位置。那将是西班牙的全部

        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

我该怎么做呢?

如果它们都必须等于西班牙,那么只需将它们添加到WHERE子句中,并加上AND

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

如果它们都必须与西班牙相等,那么只需将它们与和一起添加到WHERE子句中即可

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

我建议这样做

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

因此,如果您想更改西班牙变量,我假设它是一个变量,您只需要在查询中的一个位置包含它。

我建议这样做

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

因此,如果您想更改西班牙变量,我假设该变量将是一个变量,您只需要在查询中的一个位置包含该变量。

请注意,关于您的查询还有一些注释。你不需要每次都声明内部连接;这通常是假定的。您可以只使用join,例如在h.hotelId=p.hotelId上加入hotels h。另外,由于您为变量创建了一个别名,所以在ORDERBY语句中,您可以只使用ORDERBY“总包装成本”;您不需要重新计算此变量。请注意,关于您的查询还有一些注释。你不需要每次都声明内部连接;这通常是假定的。您可以只使用join,例如在h.hotelId=p.hotelId上加入hotels h。另外,由于您为变量创建了一个别名,所以在ORDERBY语句中,您可以只使用ORDERBY“总包装成本”;您不需要重新计算此变量。我通常会在一个公共表表达式中连接这么多表,然后选择“关闭”。我通常会在一个公共表表达式中连接这么多表,然后选择“关闭”。