0

次の SQL ステートメントに問題があります。

$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

何か案は?

前もって感謝します。

4

4 に答える 4

1

あなたはあなたにelseパーツを追加する必要があります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'
于 2012-12-09T19:07:57.277 に答える
1

MySQLIFステートメントの構文は次のとおりです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
于 2012-12-09T19:09:02.550 に答える
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'";
于 2012-12-09T19:13:49.140 に答える
0

elseそのIFステートメントの一部を忘れました:

$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'";
于 2012-12-09T19:08:17.293 に答える