2016-09-01 8 views
0

私はここ数日から立ち往生し、何をすべきか分かりません。
私はデータを取得するために3つのテーブルを持つデータベースを持っています。私は内部結合と順序でロールアップを使用することはできません。
私は結果を返す次のクエリを持っています。内側の2つのテーブルをロールアップして並べ替え、グループ化してください。

SELECT bb_catg.catg_name, 
     bi_item_name, 
     sum(bi_item_qty) as TotalQty, 
     sum(bi_item_total) as Grandtotal 
FROM bb_bill_items 
    inner join bb_items 
    on bb_bill_items.item_id = bb_items.item_id 
    inner join bb_catg 
    on bb_items.catg_id = bb_catg.catg_id 
    inner join bb_bill 
    on bb_bill_items.bil_id = bb_bill.bil_id 
where dateandtime = '$date' and paymenttype = '$Status' 
group by bb_bill_items.item_id 
order by bb_catg.catg_name 

結果

catg_name | bi_item_name | TotalQty | Grandtotal 
------ | ------------ |--------- |----------- 
PASTRIES |Cupcake  |1   |270 
PASTRIES |Eclair  |1   |150 
PASTRIES |Mousse  |1   |350 
      ---------- 
      total  |3   |770 

すべてのヘルプは理解されるであろう。

+1

一般的なGROUP BYルールでは、GROUP BY句が指定されている場合、SELECTリストの各カラム参照は、列またはセット関数の引数になります! – jarlh

+0

'order by'と' rollup'を一緒に使うことはできません。これはMySQLの文書化された制限です。注文とロールアップの両方が必要であると思うように、探している出力をplsで説明できますか? – Shadow

+0

それは私のクエリで無効ではない、それは結果を与えるが、私は思ったものではない。 –

答えて

0

あなたが解決のために、クエリの下に変更することができます。他の列と

SELECT bb_catg.catg_name,bi_item_name, 
     sum(bi_item_qty) as TotalQty,sum(bi_item_total) as Grandtotal 
FROM bb_bill_items 
inner join bb_items 
    on bb_bill_items.item_id = bb_items.item_id 
inner join bb_catg 
on bb_items.catg_id = bb_catg.catg_id 
inner join bb_bill 
    on bb_bill_items.bil_id = bb_bill.bil_id 
where dateandtime = '$date' and paymenttype = '$Status' 
group by bb_catg.catg_name,bb_items.bi_item_name 
order by bb_catg.catg_name 

集計関数を使用すると、GROUP BY句で追加することができます。

+0

注文を削除してロールアップを追加すると、それはそれとなると思います。 – Shadow

+0

私は注文を取り除いてロールアップを使用したが、問題は私がitem_namとcatg_nameをNull値ではない最後の列に複製することです。 –

+0

@Nikunj Rathod私は2列、Grandtotal)私の場合。 group by節のカラム名を変更することはできません。 –

関連する問題