2014-10-20 2 views
1

전 SQL에 익숙하며이 쿼리를 설정하는 데 문제가 있습니다.MS ACCESS 두 테이블의 SQL 쿼리

TEAMS

Name|City|Attendance 
Jets| NY| 50 
... 

그리고 게임에 대한 정보를 보유하고, 다른 하나는 연주라는 게임 : :이처럼 보이는 두 개의 테이블, 팀에 대한 정보를 보유 하나라는 팀이

게임 게임의 각 행에 대해

Home|Visitors|Date  |Result 
Jets| Broncos| 1/1/2012| Tie 
... 

내가 군대에 오전 각 팀 (홈 팀과 방문 팀 모두)의 이름과 도시, 게임의 날짜와 결과 - 총 6 개 필드.

지금 당장 필드를 표시하는 방법을 알아 냈지만 한 팀의 도시에만 제공하는 방식으로, 둘 다 제공하지는 않습니다. 지금까지 내 쿼리가 있습니다. 내가 일종의 하위 쿼리가 필요하지만 그것을 설정하는 방법을 알아낼 수없는 그림. 도와 주셔서 감사합니다.

SELECT Home, City AS [Home City], Visitors, City AS [Visitor City], Date, Result 
FROM GAMES, TEAMS 
WHERE Home=Name 
ORDER BY Home DESC , Result DESC , Visitors DESC; 

답변

2

당신은 두 번 TEAMS 테이블을 사용해야합니다 (거기에있는 동안 대신 암시이 where 상태에서 조인 가 사용 사용하는, 그리고 명시 적 조인 .. 깨끗하고 쉽게 읽을 수) : 테이블은 테이블 이름을 단축하는

select g.home, ht.city as home_city, 
     g.visitor, vt.city as visitor_city, 
     g.date, g.result 
from (games as g 
    inner join teams as ht on g.home = ht.name) 
    inner join teams as vt on g.visitor = vt.name 

내가이 예에서는 별칭을 사용하고 있습니다 (g "방문자 팀"에 대한 "홈 팀"에 대한 GAMES, htvt에 대한). where 절에서 관계 조건을 정의하는 대신 from 절 (inner join 사용)에서 직접 정의 할 것입니다.

+0

@AndrewLazarus 오타를 수정 해 주셔서 감사합니다 !!! (srry) – Barranka

+0

전체 디자인 +1. Access SQL에서이 작업을 수행하려면 FROM 절에 괄호가 필요합니다. Access는 하나 이상의'JOIN'을 포함하는 질의를 요구합니다. – HansUp

+0

@HansUp 정말요? (나는 "Bill'SQL"과 다소 녹슬었지만, 어쨌든이 방법이 효과가 있다고 생각한다.) – Barranka

0

JOINTEAMS 테이블을 두 번 사용해야합니다.

SELECT Home, HomeTeam.City as Home_City, Visitors, VisTeam.City AS Vis_City, 
    -- more field 
FROM GAMES JOIN TEAMS AS HomeTeam 
ON GAMES.Home=HomeTeam.Name 
    JOIN TEAMS AS VisTeam ON GAMES.Visitors=VisTeam.Name;