2012-04-19 2 views
0

나는 학생의 이름, 성, SID, 전공 및 사소한 것을 표시하려고합니다. 각 학생의 코스, CID 및 회의 시간은 물론. Bridge 테이블이 나를 혼란스럽게합니다. Idk는 Union 또는 Multi-Table Join을 수행할지 여부를 결정합니다. 도와주세요!SQL UNION/JOIN?

enter image description here

+0

두 방법을 모두 사용하여 쿼리를 만들려고 했습니까? 무엇을 찾으셨습니까? –

+0

Yesss :)하지만 마지막 문제는 하하 야. 그 숫자가 아무 것도 계산하지 못하면 UNION을 만들려고했지만 대상 목록에 동일한 수의 표현식이 있어야한다고했습니다. – Kendall

+0

외부의 도움을받을 수 있습니다. – Kendall

답변

0
SELECT * 
FROM tblStudent AS s 
LEFT OUTER JOIN tblRegistration AS r 
    ON s.SID = r.SID 
LEFT OUTER JOIN tblCourse AS c 
    ON c.CID = r.CID 
+0

어떤 경우에는 내부 결합이 아니어야합니까? – Kendall

+0

@Kendall은 학생이 항상 최소한 한 코스를 택합니까? 그렇다면 INNER JOIN이 될 수 있습니다. 연관된 과정이없는 학생이있을 수 있다면 LEFT JOIN을 사용해야합니다. 그렇지 않으면 그러한 학생은 결과 집합에 포함되지 않습니다. –

0

오라클 구문이 이후

SELECT stu.FirstName, 
     stu.LastName, 
     stu.Major, 
     stu.Minor, 
     reg.SID, 
     cou.CID, 
     cou.MeetingTime 
FROM 
     tblStudent as stu, 
     tblRegistration as reg, 
     tblCourse as cou 
WHERE 
     stu.SID(+) = reg.SID 
     and reg.CID = cou.CID 
3

대신 직접 내가 당신에게 몇 가지 팁을 제공 할 것입니다 귀하의 질문에 대답의 숙제입니다.

정말로 UNIONJOINs을 검토해야합니다.

UNION은 동일한 데이터 집합에서 반환 할 쿼리가 여러 개인 경우에 사용됩니다. 각 필드에는 비슷한 데이터 유형이 있어야하고 각 쿼리에는 동일한 개수의 필드가 있어야합니다. 따라서이 질문에 대해서는 UNION을 사용하는 것이 맞습니까? 아마 당신이 한 줄에 학생과 코스를 원하기 때문에.

이 쿼리 유형에는 JOIN이 필요합니다. 온라인에서 사용할 수있는 JOIN에 대한 유용한 시각적 설명이 있습니다. 나는 당신이 SQL을 공부하는 동안 당신을 도울 수 있도록 도와 주길 권한다.

A Visual Explanation of SQL Joins

당신이 학생 데이터와 자신의 코스 정보, 당신은 두 가지를 얻을 수있는 유일한 방법이 필요하기 때문에이 tblRegistration을 사용하는 것입니다. 이 테이블을 사용하면 쿼리에서 원하는 결과를 얻어야합니다.

편집 : 주석 기가 두 번째 도면이 여기에 동의 UNION 아닌 JOIN이라고 지적

때문에 그것을 증명하는 예입니다.

위에서 설명한대로 UNION은 두 개의 쿼리를 단일 결과 집합으로 결합합니다. 조인 조건에 맞지 않는 왼쪽 또는 오른쪽 테이블의 행을 결과 집합에 포함되어 있는지

Fiddle 1

완전 외부 지정 가입 및 출력 열 : 여기에 A A UNION 데모와 sqlfiddle입니다 다른 테이블에 해당하는 값은 NULL으로 설정됩니다. 이것은 일반적으로 INNER JOIN에 의해 반환되는 모든 행에 추가됩니다. 당신이 두 쿼리의 제품은 동일하지 않습니다 볼 수 있듯이

Fiddle2

그래서 다이어그램에서 FULL OUTER JOINUNION되지 않습니다 : 여기에 FULL OUTER JOIN 데모와 sqlfiddle이다.

+0

감사합니다 :)하지만 그 브리지 테이블을 통합하는 방법을 모르겠다 – Kendall

+0

특정 질문이 있으십니까? 그러면 올바른 방향으로 당신을 가리킬 수 있습니다. – Taryn

+0

@onedaywhen 내가 동의하지 않습니다. FULL OUTER JOIN은 UNION과 같지 않습니다. 이유는 무엇입니까? 또한이 시각적 설명은 저에게 씌여지지 않았으며 여기에 100 번 인용되었습니다. 그래서 기사 이름을 검색하면됩니다. 차이점을 보여주기 위해 참조로 사용했습니다. 그들이 동일하다고 생각한다면 이유를 설명하십시오. – Taryn