2017-03-07 23 views
-1

オープンソースのPOSシステム用のデータベースがあります。 ticketlinesという名前のテーブルには、すべての販売アイテムが含まれています。 与えられた割引は、このテーブルに項目名なしで格納されます。 私は商品の販売価格を計算する前に、行でNULLの商品名の行を読み出すことができるクエリを探しています。MySQLデータベースの比較2行

POS Table Ticketlines

+0

ようこそ!質問は理解するのが少し難しいです。あなたは[最小、完全で、検証可能な例](http://stackoverflow.com/help/mcve)を投稿してください。 – user5226582

+0

"前の行"は、RDBMSが認識している概念ではありません。 DDLとサンプルデータを表示します。 – JimmyB

答えて

0

自己結合は、この目的のために動作します。アイデアは、商品を使ってチケットを探すことです。ディスカウントラインは、チケット番号が一致する場所に参加し、ディスカウントラインには製品が含まれず、製品ライン番号+ 1がディスカウントライン番号に等しくなります。

select p.ticket, 
      p.line, 
      p.units, 
      p.price as unit_price, 
      ifnull(d.discount,0) as discount, 
      p.units * (p.price - ifnull(d.discount,0)) as sale_price 
    from ticketlines p 
left join ticketlines d on (d.ticket=p.ticket and d.line=p.line+1 and d.product is null) 
    where p.product is not null; 
+0

ありがとうございます。 – Alex32