2013-08-28 2 views
0

cakephp 및 mysql을 사용하여 저장 프로 시저에 문자열을 전달해야합니다. 열 수 없습니다 : 여기 열을 찾을 수 없습니다 : 1054 알 수없는 'Fielding list'의 'PlantingBlock.id'열

이 오류를 제공

SET whereClause = " AND 1 = 1 "; 
IF(in_clause IS NULL OR in_clause = '') THEN 
    SET whereClause = CONCAT(whereClause, ' AND ',in_clause); 
END IF; 

SET statement = 'SELECT PlantingBlock.* FROM (
    SELECT PB.*, 
    B.block, 
    V.variety, 
    ST.size_type, 
    PLA.date AS plant_date, 
    PLA.week_no, 
    C.crop, 
    C.id AS crop_id 
    FROM lf_planting_blocks AS PB, 
     lf_blocks AS B, 
     lf_properties AS P, 
     lf_property_types AS PT, 
     lf_size_types AS ST, 
     lf_varieties AS V, 
     lf_plantings AS PLA, 
     lf_crops AS C 
    WHERE 
     PB.block_id = B.id 
     AND B.property_id = P.id 
     AND P.property_type_id = PT.id 
     AND B.size_type_id = ST.id 
     AND PB.variety_id = V.id 
     AND V.crop_id = C.id 
     AND PB.planting_id = PLA.id 
     AND PB.plant_still_active = true 
     AND B.is_deleted = false 
     AND P.is_deleted = false 
     AND PT.is_deleted = false 
     AND ST.is_deleted = false 
     AND V.is_deleted = false 
     AND C.is_deleted = false'; 

SET statement = CONCAT(statement, whereClause, ') AS PlantingBlock ORDER BY PlantingBlock.plant_date DESC'); 

내 저장 프로 시저,라고 내가 저장 프로 시저에 전달하고있어 문자열, 아래

PlantingBlock.id IN (13,10) 

, SQLSTATE [42S22]입니다 발견 : 1054 '필드 목록'에 'PlantingBlock.id'알 수없는 열

답변

0

를 참조하면서 내부 선택에 조건을 추가하려고하면 문제가 발생합니다이 하위 쿼리에 부여 된 별칭을 사용하는 열입니다. 에

따라서 당신이 중 하나를 닫는 괄호와 하위 쿼리 및 WHERE 절을 적용하여 외부 SELECT

SELECT PlantingBlock.* 
FROM 
(
    ... 
) AS PlantingBlock 
WHERE PlantingBlock.id IN (13,10) 
ORDER BY PlantingBlock.plant_date DESC 

또는 더 나은 아직 당신의 내면의 선택에 id 필드를 참조하십시오.

SELECT PlantingBlock.* 
FROM 
(
    ... 
    AND PB.id IN (13,10) 
) AS PlantingBlock 
ORDER BY PlantingBlock.plant_date DESC 
+0

@Irawana 당신이 (대답은, ** [동의] 도움 고려하시기 바랍니다 것처럼 느끼는 경우 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer- 작동시켜. – peterm

관련 문제