2016-08-24 2 views
0

У меня есть 2 колонки для продукта price, который представляет собой обычную цену и new_price, который представляет предложение продукта. Когда я заказываю их по цене, я не могу получить правильный порядок, если оба столбца заполнены. Теперь он заказывает сначала по новой цене, а затем по цене. Я хочу как-то конкатенировать цены.Mysql заказать по 2 колонкам, которые представляют цену и новую цену

if($order==1) 
{ 
    $order_by='Produse.New_price ASC,Produse.Price ASC'; 
} 

if($order==2) 
{ 
    $order_by='Produse.New_Price DESC,Produse.Price DESC'; 
}  

if($order==3) 
{ 
    $order_by='Produse.Nume_Prod ASC'; 
} 

if($order==4) 
{ 
    $order_by='Produse.Nume_Prod DESC'; 
} 

if($order==0) 
{ 
    $order_by='Produse.Nume_Prod DESC'; 
} 
     $stmt=$dbh->prepare("Select * FROM Produse 
           INNER JOIN Categorii on Produse.ID_Categorie=Categorii.ID_Categorie 
          where Categorii.Nume_Categ=:id 
          ORDER BY $order_by"); 
     $stmt->bindParam(':id',$id,PDO::PARAM_INT); 
     $stmt->execute(); 
+0

использовать сливаются, чтобы возвратить первый непустой цена в новой цене vs price ... 'order by coalesce ('Produse.new_price, produse.price)' Это предполагает, что, когда оба присутствуют, вы хотите заказать по новой цене. и новая цена - нуль, которую вы хотите заказать по цене. – xQbert

+0

зависит от того, что вы хотите ... 'order by new_price + price DESC'' order by IF (new_price IS NOT NULL, new_price, price) DESC' или просто заказать только один столбец, потому что для меня это вообще не имеет смысла ;) – iRaS

+0

Что означает «как-то конкатенация цен»? –

ответ

1

Использование Coalesce для сортировки по новой цене, если присутствует (не нуль), то по цене, если новая цена равна нулю ...

if($order==1) 
{ 
    $order_by='coalesce(Produse.New_price,Produse.Price) ASC'; 
} 
if($order==2) 
{ 
    $order_by='Coalesce(Produse.New_Price,Produse.Price) DESC'; 
}  
if($order==3) 
{ 
    $order_by='Produse.Nume_Prod ASC'; 
} 
if($order==4) 
{ 
    $order_by='Produse.Nume_Prod DESC'; 
} 
if($order==0) 
{ 
    $order_by='Produse.Nume_Prod DESC'; 
} 
     $stmt=$dbh->prepare("Select * FROM Produse 
           INNER JOIN Categorii on Produse.ID_Categorie=Categorii.ID_Categorie 
          where Categorii.Nume_Categ=:id 
          ORDER BY $order_by"); 
     $stmt->bindParam(':id',$id,PDO::PARAM_INT); 
     $stmt->execute(); 
+0

thnx, он работал: D – chris227

Смежные вопросы