2012-12-09 6 views
0
나는이 SQL 문에 문제가 오전

: MySQL- IF 문 오류

$sql="SELECT b.FrameNumber, b.BikeCode, IF(b.ProductID = 0, p.FrameNumber) 
    AS FrameNumber 
FROM BikeStock b LEFT JOIN Purchase p ON b.FrameNumber = p.FrameNumber 
WHERE b.bikecode = '$bikecode'"; 

내가 SQL 문이 방법으로 작업 할 :

Select FrameNumber & BikeCode from BikeStock 
THEN IF ProductID(BikeStock) is equal to 0 
    then it will grab the framenumber from the purchase table where bikecode is equal to $bikecode 

어떤 아이디어를?

미리 감사드립니다.

답변

1

MySQL의 IF 문장의 구문은 다음과 같습니다 IF(condition, expression if true, expression if false).

지금까지 내가 당신이 실제로 (당신이 WHERE에 여러 조건을 가질 수 기억 -을 결합하는 부울 연산자를 사용)를 WHERE 절을 찾고 질문에서 볼 수 :

SELECT b.FrameNumber, b.BikeCode, p.FrameNumber 
FROM BikeStock b 
LEFT JOIN Purchase p ON b.FrameNumber = p.FrameNumber 
WHERE b.bikecode = :bikecode AND b.ProductID = 0 
+0

대단히 감사합니다. 그러나 0을 입력하면 "사용자에게 재고가 없음"메시지가 표시 될 수 있습니다. – Hii

+0

아마도 값 0을 사용자의 오류 문자열로 바꾸는 것이 가장 좋을 것입니다. 프론트 엔드. (그렇지 않으면 : IF (p.FrameNumber = 0, '품절', p.FrameNumber) FrameNumber' – knittl

1

당신은 당신의 if()

SELECT b.FrameNumber, b.BikeCode, 
     IF(b.ProductID = 0, p.FrameNumber, NULL) AS FrameNumber 
FROM BikeStock b 
LEFT JOIN Purchase p ON b.FrameNumber = p.FrameNumber 
WHERE b.bikecode = '$bikecode' 
0

에 다른 부분을 추가해야합니다 당신은 IF 문에 대한 else 부분을 잊었 :

$sql = "SELECT b.FrameNumber, b.BikeCode, IF(b.ProductID = 0, p.FrameNumber, NULL /* ELSE HERE */) AS FrameNumber 
     FROM BikeStock b 
     LEFT JOIN Purchase p 
      ON b.FrameNumber = p.FrameNumber 
     WHERE b.bikecode = '$bikecode'"; 
0

시도
$sql="SELECT b.FrameNumber, b.BikeCode, p.FrameNumber (
      CASE WHEN b.ProductID = 0 THEN p.FrameNumber ELSE NULL END AS Framenumber) 
      FROM BikeStock b 
      LEFT JOIN Purchase p ON b.FrameNumber = p.FrameNumber 
      WHERE b.bikecode = '$bikecode'";