2010-08-06 2 views
0

SQL 쿼리를 작성하는 데 도움이 될 수 있습니다. 한 테이블에서 일부 데이터를 표시하려고하지만 필요한 데이터는 다른 테이블의 값에 따라 다릅니다. 나는 이것에 대해 매우 익숙하므로 이것을 최대한 설명하려고 노력할 것입니다.여러 테이블에서 SQL 쿼리 작성

저는 Orders 테이블에 ShipCityOrderId 컬럼이 있습니다. OrderId 값을 Orders에서 받고 싶습니다. 여기에서 ShipCity = Caracas입니다. 그 별개의 OrderId 값을 사용하여 Order Details이라는 다른 테이블을 쿼리하고 싶습니다. [Order Details]. [OrderId] = [Orders]. [OrderId] (= 'Caracas').

나는 의미가 있기를 바랍니다. 내가 막혔다면, 나는이 값들을 저장하기 위해 일부 변수 나 임시 테이블을 생성 할 필요가있을 것이고, 아직 이러한 것들에 대한 경험이 없다. 나는 어떤 도움을 주셔서 감사합니다. 또한 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' 

답변

3

당신은 in the Wikipedia entry 또는 here을 찾을 수 있습니다 조인에 대해 내부가

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

더 많은 정보를 가입 사용하고 싶습니다.

+0

+1 : I보다 빠르게 –

+0

글쎄 이제 막 모든 것을 보았습니다 :) 감사합니다. – LittleBobbyTables

3

두 개 이상의 테이블에서 데이터를 결합하기 위해 JOIN 절을 사용합니다. 이런 식으로 뭔가 당신이

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

당신은 두 개의 테이블을 조인하는 데 필요한 구문을 다시 확인해야하지만 :

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

에게 ...하지만 할 이유가 쿼리에서 주문 정보 테이블이 필요하십니까?

0

SubQuery 메서드로하는 것은 어떻습니까?

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

조인으로 충분할 때 하위 쿼리를 사용하는 이유는 무엇입니까? 또한 WHERE 문에서 왼쪽 괄호는 IN의 오른쪽에 있어야합니다. – LittleBobbyTables

+0

아시다시피 조인 구문을 사용하면 SQL 서버가 과부하 상태가됩니다. 왜냐하면 동시에 두 테이블을 크롤링하기 때문입니다. 그래서 하위 쿼리를 사용합니다. – ppshein

+0

과부하 되었습니까? 다른 테이블에 가입하기 위해 데이터를 마사지해야하는 인덱스가 없거나 악화 될 경우 테이블 스캔을 수행합니다. –

관련 문제