0

group by を使用しても完全なデータを表示する方法を知りたいですか? 私はそれをグループ化したいだけです。

ここに私のテーブルの例を示します:

写真

これは私のクエリです:

(SELECT dp.menu_paket,d.id_detail,t.no_meja,m.nama_menu,d.jumlah,t.status,t.nama_pegawai
FROM menu m
join detail_paket dp on dp.menu_paket=m.nama_menu
JOIN detail_transaksi d on m.id_menu = d.id_menu
join transaksi t on t.id_transaksi=d.id_transaksi where t.status='progress' and d.status_menu='progress' group by id_detail) 
UNION
(SELECT dp.menu_paket,d.id_detail,t.no_meja,p.nama_paket,d.jumlah,t.status,t.nama_pegawai
FROM paket p
join detail_paket dp on dp.id_paket=p.id_paket
JOIN detail_transaksi d on d.id_paket=p.id_paket
join transaksi t on t.id_transaksi=d.id_transaksi where t.status='progress' and d.status_menu='progress' group by id_detail);

ありがとう..!

4

2 に答える 2

0

group by の代わりに、distinct を適用して、同じ複数のレコードを避けることができます。group by は、集計関数がある場合に使用されるため、クエリです。Distinct は、2 つの行がまったく同じ場合、複数の行ではなく単一の行を取得します。

これを試して

select distinct columnname from table name
union
select distinct columnname1 from table name
于 2013-04-24T07:34:33.963 に答える
-1

2 つの問題があると思います。

1)GROUP BYは、一般に、のような集約関数のために行をグループ化したい場合に使用されますSUMORDER BY行の順序を制御する を探しているかもしれません。複数の列を指定ORDER BYして、「グループ化」効果を得ることができます。これは、行をリスト内で隣り合わせにしたい場合に必要なものです。

2) UNION、少なくとも私が知っているデータベースでは、重複した行を削除します。すべての行を保持したいUNION ALL場合に必要です。

編集:

投稿者のコメントに応えて、あなたは絶対に欲しいORDER BYと思うかもしれませんUNION ALL。である必要がありますORDER BY no_meja, id_transaksi。次のクエリを試して、必要なものが得られるかどうかを確認してください。

SELECT * FROM
((SELECT dp.menu_paket,d.id_detail,t.no_meja,m.nama_menu,d.jumlah,t.status,t.nama_pegawai
FROM menu m
join detail_paket dp on dp.menu_paket=m.nama_menu
JOIN detail_transaksi d on m.id_menu = d.id_menu
join transaksi t on t.id_transaksi=d.id_transaksi
where t.status='progress' and d.status_menu='progress') 
UNION ALL
(SELECT dp.menu_paket,d.id_detail,t.no_meja,p.nama_paket,d.jumlah,t.status,t.nama_pegawai
FROM paket p
join detail_paket dp on dp.id_paket=p.id_paket
JOIN detail_transaksi d on d.id_paket=p.id_paket
join transaksi t on t.id_transaksi=d.id_transaksi
where t.status='progress' and d.status_menu='progress')) x
ORDER BY x.no_meja, x.id_transaksi;
于 2013-04-24T04:48:12.233 に答える