2014-07-18 6 views
1
SELECT `member_name.smf_members`, COUNT(`author.smf_links`) 
FROM smf_members, smf_links 
JOIN smf_links ON id_member.smf_members = author.smf_links; 
GROUP BY `author.smf_links` 

smf_links는 고유 한 테이블/별칭이 아닙니다. 내가하고 싶은 일은 저자가 동일한 행이 몇 개 있는지 계산해보고 작성자 (숫자) 및 수 대신 멤버 이름을 표시하는 것입니다.SQL JOIN이 실패합니다. 고유 한 테이블/별칭이 아닙니다.

이렇게 대신 : 1 | 23

다음과 같이 표시됩니다. 토끼 | 23

나는 이것을 이해할 수없고 내 뇌는 인터넷 검색으로부터 감각이 없어졌습니다. 누군가 나를 도울 수 있습니까? :)

+0

'member_name.smf_members' 매개 변수는 아마도 토끼를 표시합니다. 그렇지 않습니까? 어쩌면 member_id 또는 뭔가가 당신의 문제를 해결할 것입니다. – SerhatCan

+0

정말로'smf_links'를 두 번 사용해야합니까? 내재적 조인과 동일한 테이블에 대한 명시 적 조인이 있습니다. – Barmar

+0

나는 이드가 아닌 이름 만 보여주고 싶다. 이드는 내가 가입하고 싶은 것입니다. 바머 무슨 뜻인가요? –

답변

4

동일한 테이블 (smf_links)을 두 번 사용하기 때문에 오류가 발생합니다. 그게 당신이 정말로하고 싶은 일이라면, 당신이 그들을 구별 할 수 있도록 그들에게 별칭을 주어야합니다. 하지만 실수로 그렇게했다고 의심합니다.

또한 구문은 tablename.column이 아니라 column.table입니다. 그리고 당신은 각각의 부분에 backticks를 별도로 두어야합니다; .이 역 따옴표 안에 있으면 구분 문자가 아닌 리터럴 문자로 처리됩니다.

SELECT `smf_members`.`member_name`, COUNT(*) 
FROM smf_members 
JOIN smf_links ON smf_members.id_member = smf_links.author 
GROUP BY smf_links.author 
+0

그게 다있어, 고마워! 링크 테이블 행을 계산하는 방법을 잘 모르는 경우. 설명해 주시겠습니까? :) –

+0

'JOIN'은 교차 곱을 생성하고'COUNT (*) '는 그 교차 곱의 행을 계산합니다. 컬럼이'NULL' 인 행을 세지 않는 한,'COUNT()'에 컬럼 이름을 넣을 필요가 없습니다. – Barmar

+0

아, 맞아, 정말 고마워! 나는 녹슨 것이지만 나는 인정한다. 아직도 너무 엄격하게/문자 그대로 생각하고 있습니다. –