MySQL查询显示的数据超出预期

时间:2013-08-31 19:19:28

标签: mysql join

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

我的桌子以这种方式连接:
表格narudzba中的PK id_usluga(表格usluga)是FK id_usluga PK id_usluga(表格usluga)在表usluga_hrana中为FK id_usluga 表格usluga_hrana中的PK id_kategorija(表格kategorija_jela)为FK id_kategorija PK id_hrana(表格naziv_jela)在表usluga_hrana中为FK id_hrana 表格naziv_jela中的PK id_kategorija(表kategorija_jela)为FK id_kategorija

以下是我的表格的相册以及具有多个值的查询结果: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

我认为我的查询不好......

1 个答案:

答案 0 :(得分:0)

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

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

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

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