스키마가 조금 이상합니다. 이 같은SQL - 가장 저렴한 옵션 목록을 생성하십시오.
CREATE TABLE [dbo].[Events](
[Id] [int] NOT NULL,
[Name] [varchar](50) NOT NULL,
[VenueId] [int] NULL
)
CREATE TABLE [dbo].[Venues](
[Id] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[AveragePrice] [int] NOT NULL
)
그리고 데이터 :
insert into Venues (Id, Name, AveragePrice) VALUES
(1, 'Arena1', 100),
(1, 'Arena2', 200),
(1, 'Arena3', 50),
(2, 'Club1', 50),
(2, 'Club2', 150)
insert into Events (Id, Name, VenueId) VALUES
(1, 'ConsertAtArena1', 1),
(2, 'ConsertAtArena2', 1),
(3, 'ConsertAtArena3', 1),
(2, 'Conference', NULL)
내가 생산해야합니다 'ConsertAtArena3', 'Conference'
나는 두 개의 테이블이있다. 그것은 동일한 VenueId와 NULL VenueId를 가진 모든 이벤트를 가진 이벤트에 대해 가장 저렴한 Venue 옵션입니다. 테이블은 아주 거대하고 수백만 행에 이릅니다. 효율적인 SELECT가 무엇이겠습니까?
데이터베이스는 SQL Server 2012 Standard입니다.
와뿐만 아니라 예상 된 결과 추가 : 여기 아레나스라는 별도의 테이블을 추가하는 예입니다. – jarlh
당신에게 필요한 것은 쿼리 비용을보기위한 실행 계획입니다! – Ragul
''ConsertAtArena3''는 * 가장 저렴한 * 방법은 무엇입니까? 3 개의 콘서트 모두 동일한 'venueId' 참조를 가지므로 모두 동일한 가격을 갖게됩니다. –