2012-12-09 176 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

你忘了一个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'";