php
  • mysql
  • sql
  • database
  • 2012-12-09 32 views 2 likes 
    2

    我想使一個SQL語句內部有一個IF語句類型。這是我目前的說法:試圖使某種類型的IF mySQL語句

    $sql = "SELECT b.FrameNumber, b.BikeCode, p.FrameNumber 
         FROM BikeStock b LEFT JOIN Purchase p 
           on b.FrameNumber = p.FrameNumber 
         WHERE b.bikecode = '$bikecode'"; 
    

    我想結合上面的語句與下面的文本,但不知道如何。

    如果BikeStock表內的PurchaseID值大於0,它將選擇一個不同的幀號。

    幫助將非常感激,並提前致謝。

    回答

    0

    你應該

    SELECT b.BikeCode, IF(b.PurchaseID > 0, 
         p.FrameNumber, b.FrameNumber) AS FrameNumber 
        FROM BikeStock b 
        LEFT JOIN Purchase p on b.FrameNumber = p.FrameNumber 
        WHERE b.bikecode = '$bikecode' 
    

    附:不要忘記逃避$bikecode進行SQL注入。

    +0

    不幸的是,它沒有工作,但謝謝。也許,我不確定爲什麼,並且是你的IF語句,如果幀號大於0,它將被處理? – Hii

    +0

    你可以嘗試IFNULL,而不是IF和切換參數的地方 –

    +0

    我很困惑,所以IFNULL(b.purchaseID,p.FrameNumber,b.FrameNumber)作爲FrameNumber – Hii

    0
    SELECT b.FrameNumber, b.BikeCode, 
        CASE WHEN b.purchasreID > 0 THEN p.other_framenumber ELSE p.FrameNumber END AS FrameNumber 
    FROM BikeStock b LEFT JOIN Purchase p 
    ON b.FrameNumber = p.FrameNumber 
    WHERE b.bikecode = '$bikecode' 
    

    除此之外,考慮Bobby Tables以防止SQL注入。

    +0

    謝謝你的其他。我真的不明白你是怎麼做到的。因爲我沒有一個名爲other_framenumber的字段。也許我解釋了我上面錯誤的想法。我希望當一個framenumber被選中,我希望它確保framenumber沒有purchaseID,如果它我想要它選擇另一個framenumber。 – Hii

    +0

    「另一個framenumber」是什麼? –

    +0

    在我的自行車表格中,我有4個框架編號,其中有自行車代碼123.我希望如果某人已經購買了一個框架編號,它將選擇另一個框架編號。對困惑感到抱歉。 – Hii

    相關問題