Ich habe folgende MySQL-Abfrage:Wie nicht auf Lager Einheiten bestellen letzten
SELECT
*
FROM
product
INNER JOIN productcontent ON product.id = productcontent.productID
WHERE
product.deactivate <> '1'
AND productcontent.price > 0 { $level1SQL }
AND menulevel IN ($imploded)
OR menulevel = '$menulevelID' { $level1SQL }
ORDER BY
(
CASE
WHEN discountPrice < price
AND discountPrice > 0 THEN
CAST(
discountPrice AS DECIMAL (10, 2)
)
ELSE
CAST(
price AS DECIMAL (10, 2)
)
END
) { $price_order }
LIMIT { $limit }
aber ich muß auch sicherstellen, dass, wenn der product.notInStock
Satz 1
ist es ganz am Ende bestellt werden (aber nach Name/Preis, wenn eine solche Sortierung gewählt wird), ist es überhaupt möglich oder sollte ich nur 2 Abfragen verwenden - eine für Produkte, die auf Lager sind, und eine für solche, die nicht vorhanden sind?
Vielleicht wollen Sie 'AND (menulevel IN ($ implodiert) ODER menulevel = '$ menulevelID' {$ level1SQL})'? – jarlh
Was sind die möglichen Werte für 'notInStock', 0 und 1? Fügen Sie es dann einfach als erste Spalte Sortieren nach hinzu, andernfalls wenden Sie einen anderen CASE an. Übrigens, bist du sicher, dass die WHERE-Bedingungen die richtigen Zeilen ohne Parens zurückgeben? – dnoeth