나는 내가 뭔가 잘못하고 있다고 확신하지만 정확히 무엇을 알아 내지 못하니.MySQL LEFT JOIN RAND() - 이상한 행동? 아니면 내가 뭔가 잘못하고있는거야?
쿼리가 제대로 실행되고 아무 이유없이 aff_affiliatelink
빈을 반환하는 경우가 있습니다. 첫 번째 JOIN에서 RAND()를 제거하면 모든 것이 잘 작동하지만 임의의 제휴가 필요합니다 ... 이 문제를 일으킬 수있는 아이디어가 있습니까?
EDIT : 그냥 눈치 챘습니다. aff_affiliatelink
의 game_software는 항상 "2"입니다. 연결되어 있는지는 모르지만 잘못 이해하는 데 유용 할 수 있습니다.
SELECT game_software,
aff_affiliatelink
FROM games g
LEFT JOIN (SELECT asoft_affiliateid,asoft_softwareid
FROM affiliates_software
ORDER BY RAND()) aff_soft ON aff_soft.asoft_softwareid =g.game_software
LEFT JOIN (SELECT aff_id,
aff_affiliatelink,
aff_description,
aff_bonus,
aff_title,
aff_image,
aff_imagealt,
aff_banner,
aff_banneralt
FROM affiliates
WHERE aff_isactive = 1) aff ON aff_id=aff_soft.asoft_affiliateid
GROUP BY game_id
ORDER BY game_releasedate DESC
편집 :
여기 내 쿼리입니다 두 번째 왼쪽을 변경 한 후 작동하지만 그 그것을하는 올바른 방법입니다 확실하지 메신저 보인다, 가입 INNER에 가입 .. .. 누군가 다른 아이디어가 있다면, 괜찮은 대답을 얻을 때까지이 질문을 열어 두겠다고 말하십시오.
@Rephael : ORDER BY RAND()는 속도에 영향을 미치지 않지만 배치 할 때 이점을주지는 않습니다. –
음, 그렇다고 생각됩니다. 내가 제거하면 매번 같은 제휴사를 얻습니다. 그곳에는 매번 다른 계열사가 있습니다. 내가 필요한 것입니다. – Dementic