2017-12-01 5 views
1

다음 코드를 사용하여 첫 번째 테이블 (fi.id, fi.user_id, fi.amount, fi.currency, fi.created_at) 만 출력으로 사용합니다. JOIN이 왜 효과적이지 않은지 말해 줄 수 있습니까? 는 선택의 일부로 도움을 Mahfoud중첩 된 SQL JOIN

SELECT fi.id, fi.user_id, fi.amount, fi.currency, fi.created_at 
    FROM fund_infos fi 
     JOIN (SELECT ii.id, ii.user_id, ii.first_kana_name, ii.last_kana_name 
    FROM individual_infos ii) Y ON fi.user_id = Y.id 
    ORDER BY fi.id 
+1

가입? 대부분의 dbms 제품에서 성능상의 문제가 있어서는 안됩니다. (좀 더 읽기가 어렵습니다.) – jarlh

+0

관련 없음,하지만 :'JOIN (선택 ii.id, ii.first_kana_name, ii.last_kana_name FROM individual_infos ii) y ON ... '은'join_infos y ON ...' –

+0

정말 고마워요. 관리자 계정을 사용 중입니다. – delalma

답변

0

에만 테이블 fund_infos의 값을 반환하는 감사합니다. Y 출력 열에

, 당신의 선택에 열을 지정

SELECT fi.id, fi.user_id, fi.amount, fi.currency, fi.created_at, 
     Y.user_id, Y.first_kana_name, Y.last_kana_name -- You can also use Y.* here 
FROM fund_infos fi 
JOIN (
     SELECT ii.id, ii.user_id, ii.first_kana_name, ii.last_kana_name 
     FROM individual_infos ii 
    ) Y 
    ON fi.user_id = Y.id 
ORDER BY fi.id 
+0

정말 고마워요. 나는 회사에 돌아가서 그것이 작동하면 알려주 자마자 그것을 시도 할 것이다. – delalma

0

당신은 당신이 SELECT에서 원하는 모든 열을 포함해야합니다. 중요한, 당신은이 작업을 수행하는 하위 쿼리가 필요하지 않습니다 :

SELECT fi.id, fi.user_id, fi.amount, fi.currency, fi.created_at, 
     ii.user_id, ii.first_kana_name, ii.last_kana_name 
FROM fund_infos fi JOIN 
    individual_infos ii 
    ON fi.user_id = ii.id 
ORDER BY fi.id; 

참고 :

  • 당신은 이미 fi.user_id을 가지고 있기 때문에 SELECT에서 ii.id을 포함 할 필요가 없습니다.
  • user_id 필드의 이름을 다른 이름으로 바꿀 수 있습니다.
  • JOIN의 조건이 맞습니까? 두 표 모두 iduser_id이있는 것이 이상합니다.
0

사용 사용중인 DBMS

SELECT fi.id, fi.user_id, fi.amount, fi.currency, fi.created_at, ii.id, ii.first_kana_name, 
     ii.last_kana_name 
FROM fund_infos fi 
    JOIN individual_infos ii ON fi.user_id = ii.user_id 
ORDER BY fi.id;