2010-07-30 5 views
1

내가 갖는 오류 :MySQL은 : 없음 독특한 테이블/별칭 : '즐겨 찾기'

하지 독특한 테이블/별칭 : '즐겨 찾기'

나는 합리적으로 강렬한 쿼리에 대한 사과 (!) :

SELECT code.id AS codeid, code.featured AS featured, code.title AS codetitle, code.summary AS codesummary, code.author AS codeauthor, code.date, code.challengeid, 
    ratingItems.*, FORMAT((ratingItems.totalPoints/ratingItems.totalVotes), 1) AS rating, 
    code_tags.*, tags.*, 
    users.firstname AS authorname, users.id AS authorid, 
    GROUP_CONCAT(tags.tag SEPARATOR ', ') AS taggroup, 
    COUNT(DISTINCT comments.codeid) AS commentcount, 
    favourites.id, favourites.code_id, favourites.user_id 

    FROM (code) 
    JOIN code_tags ON code_tags.code_id = code.id 
    JOIN tags ON tags.id = code_tags.tag_id 
    JOIN users ON users.id = code.author 
    LEFT JOIN comments ON comments.codeid = code.id 
    LEFT JOIN ratingItems ON uniqueName = code.id 
    LEFT JOIN favourites ON favourites.user_id = 10 
    LEFT JOIN favourites ON favourites.code_id = code.id 

    GROUP BY code_id 
    ORDER BY date desc 

내가 뭘 잘못하고 있니? 나는 그것을 이해할 수 없다. ...

고마워!

+0

쿼리가 수행해야 할 작업을 설명 할 수 있습니까? 왜 즐겨 찾기 테이블에 두 번 가입하고 싶습니까? 즐겨 찾기 테이블의 기본 키는 무엇입니까? –

+0

미안하지만 그건 분명하지 않았습니다! 기본적으로 데이터 코드 제출을 선택하여 목록을 채우지 만, 프로필의 사용자가 표시되고있는 경우에만 해당 목록이 표시됩니다. 나는 당신의 대답 덕분에 그것을 지금 풀었다! :) – Jack

답변

4

난 당신이 한 번만 즐겨 찾기 테이블하지만 두 조건을 결합하려는 것 같아요. 그래서이 사용하는 경우 : 당신이 대신 즐겨 찾기를 SELECT 목록에서 다음을

LEFT JOIN favourites f1 ON f1.user_id = 10 
LEFT JOIN favourites f2 ON f2.code_id = code.id 

: 당신은 실제로 두 번 다음이 테이블에 가입 할 경우

LEFT JOIN favourites ON favourites.user_id = 10 
        AND favourites.code_id = code.id 

을 당신은 그것을 두 개의 서로 다른 별칭을 제공해야 적절한 f1 또는 f2를 사용해야합니다.

+0

고마워요! 그것으로 해결되었습니다. 나는 그것을 두 번 참여 시키려하지 않았다. 나는 SQL 조인을하는 초심자이다. 건배! – Jack

관련 문제