2015-01-29 2 views
0

아래 테이블 구조가 있습니다.5 개의 테이블에서 데이터를 가져 오는 SQL 쿼리

master table > 
    m_id, pk 
    m_name, 
    p_id, fk 
    s_id, fk 
    t_id, fk 
    x_id fk 

p table > 
    p_id, pk 
    p_name 

s table > 
    s_id, pk 
    s_name 

t table > 
    t_id, pk 
    t_name 

x table > 
    x_id, pk 
    x_name 

주어진 m_id에 대해 m_id, m_name, p_name, s_name, t_name, x_name을 가져 오려고합니다.

나는 내부 쿼리

SELECT mt.m_id, mt.m_name, pt.p_name, st.s_name, tt.t_name, xt.x_name 
FROM master mt 
    INNER JOIN p AS pt ON pt.p_id = mt.p_id 
    INNER JOIN s AS st ON st.s_id = mt.s_id 
    INNER JOIN t AS tt ON tt.t_id = mt.t_id 
    INNER JOIN x AS xt ON xt.x_id = mt.x_id 
WHERE mt.m_id = 50; 

질문에 참여 적용하고이를 달성하기 위해 다른 효율적인 방법이 또는 내 쿼리는 괜찮아?

감사합니다.

+6

귀하의 질의서는 괜찮습니다. – Mureinik

+0

귀하의 질의는 전적으로 OK입니다. –

+0

쿼리가 정상적으로 처리됩니다. 성능을 찾고있는 경우 키의 인덱스로 얻을 수 있습니다. – Sruti

답변

0

귀하의 질의는 전적으로 괜찮습니다. 쿼리를 변경하려면 아래에서 사용할 수 있습니다. 별칭을 제거했습니다.

SELECT mt.m_id, mt.m_name, p.p_name, s.s_name, t.t_name, x.x_name 
FROM master mt 
    INNER JOIN p ON p.p_id = mt.p_id 
    INNER JOIN s ON s.s_id = mt.s_id 
    INNER JOIN t ON t.t_id = mt.t_id 
    INNER JOIN x ON x.x_id = mt.x_id 
WHERE mt.m_id = 50; 
+0

이 쿼리는 일반적으로 선호하지 않는 교차 결합을 만듭니다. –

+0

예 .. !! Absolutely .. 친구 당신이 복잡한 질의를하지 않으면 별칭을 사용하는 것을 피할 수 있습니다. – Avidan

+0

별칭을 사용하면 어떤 단점이 있습니까? –

관련 문제