内部连接返回重复的注册表

2mbi3lxu  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(491)

嗯,我对这个很陌生,所以我的问题是。。我正在尝试建立一个多餐厅菜单数据库,经过这么多的结构斗争,我得到了一个。
这是总体结构。

Clients
ID (int 10, PK)
mombre(varchar)
etc etc.(etc)

menucat
menuID (int 10, FK references clients.ID)
IDcat  (int 10, PK)
nombre

menuitem
ID (int 10, PK)
catID (int 10, FK references IDcat)
nombre

problem:

到目前为止,我有这个问题:

SELECT c.ID
     , c.nombre
     , mc.nombre
     , mi.nombre
FROM clientes as c
     , menuitem as mi
     , menucat
  JOIN menucat as mc 
    ON mc.IDcat = mi.cat Id
 GROUP 
    by mc.IDcat

这给我带来了:mc.nombre和mi,nombre fine,正如预期的那样。
但是,c.id和c.nombre的报告好像只有一个注册表。。。我该如何表述这个查询,以便它为我的两个客户机提供各自的菜单?
对不起,我的英语很差,写在这里的技巧也很差。
谢谢。顺便说一句,我正在使用phpMyAdminSQL控制台

aoyhnmkz

aoyhnmkz1#

SELECT c.ID , c.nombre , m.nombre , i.nombre 
FROM Clients AS c 
INNER JOIN menucat AS m 
  ON m.menuID = c.ID 
INNER JOIN menuitem AS i 
  ON i.catID = m.IDcat

这将返回所有菜单项及其关联的菜单和客户端(假设它们有关联)
考虑重命名表中的列以使数据库中的引用更容易。例如 FK 约束 menucat 参考文献 clients.ID 应位于名为 ClientID 或者类似的东西。一个电话也没有 menuID 因为它与客户机有关,而不是菜单。
如果你能给我们举一个你想退货的例子,那也会有帮助。

相关问题