2014-09-16 2 views
0
select m1.id, m1.status, at.view_data, at.view_graph, ta.tag_string 
from 
access_tbl at, image_campaign_tbl m1 
RIGHT JOIN 
     (select 
     GROUP_CONCAT(t.name) as tag_string , c.image_campaign_id 
     from campaign_tags_tbl c,tag_tbl t 
     where c.tag_id=t.id 
     $tag_q 
     group by c.image_campaign_id 
     ) as ta 
ON ta.image_campaign_id=m1.id 
where 
     m1.client_id =$client_id 
     and m1.client_id = at.client_id 
    $prev_filter 
limit $start,$end; 

오류 메시지 : 로그에MySQL을 사용하여 기본 쿼리에서 하위 쿼리 테이블에 액세스하는 방법?

: DBD :: mysql을 :: DB selectall_arrayref 실패 : 알 수없는 열 't.name을'에서 'where 절'/ 홈 /하기 Sakthi/rtads/프로젝트/오후 /Image/UI.pm 라인 2536. ** 펄 모듈에서

, 나는 다음 페이지

에서 태그 값을 기준으로 필터의 페이지 매김을 얻기 위해 $의 prev_filter에 $ tag_q의 동일한 값을 전달 해요
if ($prev_filter eq '') { 
    $prev_filter = 
     $search_clist_q . ' ' 
     . $tag_q . ' ' 
} 

오류 msg에서 내가하고있는 오류가 발생했습니다. 기본 쿼리에서 하위 쿼리 테이블에 액세스하려고하므로이 오류가 발생합니다.

그래서 하위 쿼리 외부의 tag_string (또는) t.name에 액세스하는 방법을 알고 싶습니다.

+0

문제가 하위 쿼리 외부의'tag_string '에 액세스하는 것으로 생각하지 않습니다. 오류마다,'tag_tbl'에'name'이라는 컬럼이 없다고 생각합니다. 다시 확인해주세요. – CodeNewbie

+0

암시 적 (쉼표) 및 명시 적 조인을 혼합합니다. 우선 순위 때문에 이러한 오류에 대한 확실한 방법입니다. [SELECT 구문] (http://dev.mysql.com/doc/refman/5.6/en/join.html) : * 그러나 쉼표의 우선 순위 연산자는 INNER JOIN, CROSS JOIN, LEFT JOIN 등의 연산자보다 작습니다. 조인 조건이있을 때 쉼표 조인을 다른 조인 유형과 함께 사용하면 'on clause'에 알 수없는 'col_name'형식의 오류가 발생할 수 있습니다. * – VMai

+0

어쨌든, (하위 쿼리) TA 열을 사용할 수 있습니까 메인 쿼리에서 "TA.tag_string"? 친절하게 알려주세요 – Sakthivel

답변

1

먼저 관절을위한 오래된 학교 구문을 사용하지 않는 것이 좋습니다 (FROM table1, table2,... WHERE table1.column1 = table2.column2 AND ...). 이 당신을 도울 것입니다

SELECT IC.id 
    ,IC.status 
    ,A.view_data 
    ,A.view_graph 
    ,TA.tag_string 
FROM access_tbl A 
INNER JOIN image_campaign_tbl IC ON IC.client_id = A.client_id 
            AND IC.client_id = $client_id 
RIGHT JOIN (SELECT CT.image_campaign_id 
        ,GROUP_CONCAT(T.name) AS [tag_string] 
      FROM campaign_tags_tbl CT 
      INNER JOIN tag_tbl T ON T.id = CT.tag_id 
      GROUP BY CT.image_campaign_id) TA ON TA.image_campaign_id = IC.id 
WHERE <Your filters here> 
LIMIT $start, $end 

희망 : 여기

당신을 위해 무엇을 찾고있는 반환 할 것 같습니다 쿼리입니다.

+0

안녕하세요 조엘 살라 민, 나는 당신의 방식대로 노력했습니다. 그러나 나는 어떤 결과물도 얻지 못했다. 내 하위 쿼리와 오른쪽 조인을 사용해야합니다. – Sakthivel

+0

붙여 넣은 코드가 잘 작동하고 첫 번째 10 개의 출력이 표시됩니다. 하지만 두 번째 페이지로 이동하려고하면 페이지 매김이 작동하지 않습니다. 그 의미에서 필자는 필터 쿼리를 통과해야하고 문제가있는 곳을 알려줍니다. – Sakthivel

+0

어쨌든, 기본 쿼리에서 "TA.tag_string"과 같은 (하위 쿼리) TA 열을 사용할 수 있습니까? 친절하게 알려주세요 – Sakthivel

관련 문제