Mysql select语句中的多个内部联接返回多条记录,但它只应返回一条记录

Mysql select语句中的多个内部联接返回多条记录,但它只应返回一条记录,mysql,database,join,inner-join,Mysql,Database,Join,Inner Join,我的select语句返回很多记录,但它应该只返回一条。我使用了很多内部连接,但我做错了什么 我正在制作一个电影院电影预订网站,为此我制作了一个包含以下表格的数据库: 一个房间包含A-F排和1-10个座位,如图所示: 我把节目表、电影表、房间表、人表、排表和座位表都填好了,这样我就可以预订了。我做了一些如下的预订: 我做了一个额外的页面,客户可以在那里提交他的预订ID,并获得有关预订的信息 因此,我试图在客户的预订ID的帮助下获得带有select语句的行字母和座位号 我试图通过这个查询得到它

我的select语句返回很多记录,但它应该只返回一条。我使用了很多内部连接,但我做错了什么

我正在制作一个电影院电影预订网站,为此我制作了一个包含以下表格的数据库:

一个房间包含A-F排和1-10个座位,如图所示:

我把节目表、电影表、房间表、人表、排表和座位表都填好了,这样我就可以预订了。我做了一些如下的预订:

我做了一个额外的页面,客户可以在那里提交他的预订ID,并获得有关预订的信息

因此,我试图在客户的预订ID的帮助下获得带有select语句的行字母和座位号

我试图通过这个查询得到它

SELECT seatnumber, row.row_letter FROM show 
INNER JOIN room ON room.idroom = show.room_idroom 
INNER JOIN row ON room.idroom = row.room_idroom 
INNER JOIN seat ON row.idrow = seat.row_idrow 
INNER JOIN reservation ON reservation.show_idshow = show.idshow 
WHERE reservation.idreservation = 11;
我得到的是:

我所期望的只是一张带有座位号和排字母的唱片。
我做错了什么?抱歉,我是SQL的初学者。

根据您第一张图片的预订表,您的预订与座位没有任何关系,只与人有关

您需要另一张将预订与座位ID联系起来的桌子。当然,您可以将seatid列添加到reservation表中,但当一个人预订了多个座位时,这显然会产生问题

还要注意的是,尽管您的其他表似乎非常正确,但对于您似乎正在对它们执行的查询类型来说,它们非常笨拙,这可以从所需的大量内部联接中得到证明。丢失rows表并简单地用row列标识每个座位可能是有意义的

添加预订座位表后,可以使用以下简单方式:

Idreservation,
Idseat
然后您可以通过以下方式获得预定座位:

Select rowletter, seat_number from seats
Where idseat in (select idseat from reserved_seats where idreservation=the reservation you are checking now)

这是假设您将rowletter移动到seats表。

因此,如果我理解您的意思正确,这就是解决方案:@UmutSavas不完全正确。座位是不变的,它们描述了每个房间里的实际椅子。预订和预订的座位只是说这场演出的座位已经有人了。我添加了一些描述。好的,我更改了它,就像你提到的一样。我在表中不需要主键是对的吗?很抱歉问了这么多问题。我只是想了解。@umutsava是的,你不需要主键,没有图片,谢谢。看见