0

我将 MySql 数据库连接到我的 Java 应用程序。我的用户可以选择餐食、餐食类别、数量、写备注和订购餐食。我将该订单存储在 table 中usluga_hrana。目前我只从事餐饮服务,但我也有其他服务,如饮料服务、叫醒服务等。这就是为什么我需要一张表来处理来自不同服务的所有订单,它被称为narudzba. 现在我需要在一个查询中显示所有这些属性的值:(broj_sobe房间号,表 narudzba),id_narudzba(id 顺序,表 narudzba),naziv_kategorija(类别名称,表 kategorija_jela),(naziv_hrane用餐名称,表 naziv_jela),kolicina(数量,表 usluga_hrana),napomena(注意,表 usluga_hrana),datum_vrijeme(日期和时间,表 usluga_hrana)和izvrseno(完成,表 narudzba)。问题是所有这些属性都在不同的表中,当我执行查询时,它会向我显示多个订单、餐点等值。

我的表是这样连接的:
PK id_usluga(table usluga) is FK id_uslugain table narudzba
PK id_usluga(table usluga) is FK id_uslugain table usluga_hrana PK id_kategorija(table kategorija_jela) is FK id_kategorijain table usluga_hrana
PK id_hrana(table naziv_jela) is FK id_hranain table usluga_hrana PK id_kategorija(table kategorija_jela) is FK id_kategorijain表 naziv_jela

这是我的表的专辑和具有多个值的查询结果:http: //imgur.com/a/6grPN
这是我的其他表的专辑:http: //imgur.com/a/sFPie

这是我的查询:

SELECT n.broj_soba, n.id_narudzba, kj.naziv_kategorija, nj.naziv_hrane, us.kolicina,   
us.napomena, us.datum_vrijeme, n.izvrseno
FROM narudzba n
JOIN usluga u ON n.id_usluga = u.id_usluga
JOIN usluga_hrana us ON u.id_usluga = us.id_usluga
JOIN naziv_jela nj ON us.id_jela = nj.id_jela
JOIN kategorija_jela kj ON nj.id_kategorija = kj.id_kategorija
GROUP BY n.id_narudzba, us.id_usluga_hrana

我觉得我的查询不好...

4

1 回答 1

0

你用非英语命名你的桌子让我们很难阅读/理解/思考,即使你已经把它翻译成英文:)

您的重复数据可能来自您的查询或数据表

我可以在您的usluga_hrana表格中看到您必须记录不同数量(4 和 7)的番茄汤(id=10 )。这使您的查询结果成为2 行番茄汤。另一个例子,你也有 4 条希腊沙拉记录,但因为其中 3 条得到相同的数量=1,所以当查询运行时,它返回 2 行(数量 1 和 2)

不确定你想要什么,但如果你不希望查询结果重复,你不应该数量 SELECT列并DISTINCT在需要时执行结果

于 2013-09-01T03:24:34.530 回答