从多个表编写SQL查询

时间:2010-08-06 01:57:57

标签: sql sql-server

我可以使用一些帮助编写SQL查询。我正在尝试从一个表中显示一些数据,但我需要的数据取决于来自不同表的值。我对此很陌生,所以我会尽力解释这个:

我有一个Orders表,其中包含ShipCityOrderId列。我想从OrderId Orders = ShipCity获取Caracas值。使用那些不同的OrderId值,我想查询另一个名为Order Details的表,其中[Order Details]。[OrderId] = [Orders]。[OrderId](= to'Cararacas')。< / p>

我希望这是有道理的。我遇到困难的地方是我确定我需要创建一些变量或临时表来存储这些值,我对这些事情没有任何经验。我很感激任何帮助。另外,如果有帮助,这些是Northwind示例数据库中的表。下面是我正在尝试做的虚拟样本。

Select OrderId
FROM [Orders]
WHERE ShipCity = 'Caracas'

Select OrderId
FROM [Order Details]
WHERE OrderId = (Orders.ShipCity = 'Caracas')

这是另一种看待它的方式:

SELECT OrderId
FROM [Order Details]
WHERE OrderId = [Orders].ShipCity = 'Caracas'

4 个答案:

答案 0 :(得分:3)

您想使用INNER JOIN

SELECT [Order Details].*
FROM [Order Details]
INNER JOIN [Orders] ON [Orders].OrderId = [Order Details].OrderId
WHERE [Orders].ShipCity = 'Caracas'

有关联接的详细信息,请访问in the Wikipedia entryhere

答案 1 :(得分:3)

使用JOIN子句组合来自两个或多个表的数据。这样的东西,虽然你应该仔细检查语法

select * 
from [Orders] o
join [Order Details] od on o.orderid = od.orderid
where o.shipcity = 'Caracas'

答案 2 :(得分:1)

您需要加入两个表:

SELECT DISTINCT o.OrderId
FROM Orders o INNER JOIN [Order Details] od ON o.OrderId = od.OrderId
WHERE o.ShipCity = 'Caracas'

...但为什么您需要查询中的订单明细表?

答案 3 :(得分:0)

如何使用SubQuery方法?

SELECT OrderId
FROM [Order Details]
WHERE (OrderId IN SELECT OrderId FROM Orders WHERE ShipCity = 'Caracas')