-1
나는 문이 m.extracard>0
으로 사람들에게 결과를 좁힐 어디를 추가 할 위치 :MySQL의 조합과 쿼리 및 다음 쿼리에서
SELECT u.id, u.onoma_u, u.name_u,
coalesce(u.programa, a.programa) as programa,
coalesce(u.barcode, a.barcode) as barcode,
coalesce(u.plan, a.plan) as plan,
coalesce(u.im_exp, a.im_exp) as im_exp,
coalesce(u.symb, a.symb) as symb
FROM (SELECT a1.id, a1.onoma_u, a1.name_u, a1.programa,
a1.barcode, a1.plan, a1.im_exp, a1.symb
FROM aitisi a1
where a1.id between 6017 and 6063
UNION
SELECT a2.id, m.name, m.surname, NULL, NULL, NULL, NULL, NULL
FROM members m
JOIN aitisi a2 ON a2.id = m.symbid
WHERE m.extracard > 0
) u
JOIN aitisi a ON a.id = u.id
where a.id between 6017 and 6063
을하지만 결과에 나는 사이의 외부에있는 ID를 받고 있어요 범위. WHERE m.extracard > 0
을 다른 곳에 두었을 가능성이 있습니까?
아마도 좋을 것 같습니다. 아마도 '(SELECT ...) UNION ALL (SELECT ...)'같은 unioned select를 래핑 해보십시오. BTW,'UNION'은 중복 요소 (== 느린)를 제거하고, 'UNION ALL'은 더 빠르며 중복을 유지합니다. – biziclop
'aitisi.id'는'int'입니까? –
검색어가 이상합니다. 먼저 '아이디'에서 원하는 아이디로 레코드를 선택하고 멤버를 결합한 다음 다시 '아이티'에 가입하고 'NULL'이라는 추가 열을 남기면 다시 한번 '아이디'에 가입하고 누락 된 열을 다시 채 웁니다. . 당신이 당신의 질문에서 당신이 기대하는 것을 설명하는 것이 마음에 드시면, 우리는보다 쉬운 접근법을 내놓을 수있을 것입니다 ... –