2010-02-27 2 views
1

나는 $ catname과 $ limit = 1의 두 매개 변수를 가진 다음 MySQL을 가지고있다. 그리고 잘 작동합니다.if 문을 SQL에 추가하는 방법은 무엇입니까?

SELECT P.*, C.Name AS CatName 
        FROM omc_product AS P 
        LEFT JOIN omc_category AS C 
        ON C.id = P.category_id 
        WHERE C.Name = '$catname' 
        AND p.status = 'active' 
        ORDER BY RAND() 
        LIMIT 0, $limit 

는 지금은 다른 매개 변수 $ 순서를 추가 할. $ 순서는 테이블 omc_product에서

product_order에 의해 RAND()

또는

ORDER BY 중 하나

데르 될 수 있습니다.

누구든지이 쿼리를 작성하는 방법을 알려주시겠습니까?

미리 감사드립니다. this 5.0 참조 문서의 주석에서 촬영

+0

하나 이상을 선택 하시겠습니까? O, 그리고 : PHP와 관련이 있습니까? 그에 따라 태그를 지정해야합니다. –

답변

1

:

할 수 있습니다 ORDER BYSELECT 문의 ORDER BY 절에 CASE 표현식을 사용하여 동적 COLUMN_NAME 매개 변수 :의 기준은 무엇

CREATE PROCEDURE `orderby`(IN _orderby VARCHAR(50)) 
BEGIN 

    SELECT id, first_name, last_name, birthday 
    FROM table 
    ORDER BY 

    -- numeric columns 
    CASE _orderby WHEN 'id' THEN id END ASC, 
    CASE _orderby WHEN 'desc_ id' THEN id END DESC, 
    -- string columns 
    CASE _orderby WHEN 'first_name' THEN first_name WHEN 'last_name' THEN last_name END ASC, 
    CASE _orderby WHEN 'desc_first_name' THEN first_name WHEN 'desc_last_name' THEN last_name END DESC, 
    -- datetime columns 
    CASE _orderby WHEN 'birthday' THEN birthday END ASC, 
    CASE _orderby WHEN 'desc_ birthday' THEN birthday END DESC; 

END 
관련 문제