所以,我对如何从三个表中提取信息感到困惑。让我相当清楚地设置它(我希望)...
我有三个表 FoodTruck
、MenuItems
和 Ingredients
。每个食品卡车可以有多个菜单项(有一个与 FoodTruck 卡车 ID 相关联的卡车 ID 列),每个菜单项可以有多个成分(与 MenuItem 菜单 ID 相关联的菜单 ID 列)。
所以,我对 mysql 命令获取我真正想要的信息感到非常困惑(连接对我来说仍然相当困惑),因为最终我希望能够向用户展示食品卡车的菜单。它看起来像一个由包含成分的菜单项组成的大菜单。
如果有一个选择查询可以获取所有这些信息,那么输出将由什么组成?我的意思是,它将如何呈现?一个菜单项数组,然后是一个配料数组?如果我得到了这些信息,我就能弄清楚如何处理它,因为我正在使用 JDBC...
忘记添加:在菜单表中有一些列(主键:menuID、foodName、价格、foodType、specialComments)...我需要所有这些。在配料表中,我有名称和菜单ID,但我实际上只需要显示名称。
我已经完成了我需要的大部分查询。只是我现在试图显示完整的菜单。我正在使用 DAO 设计和准备好的语句来清理输入。在这样做时,我希望能够使用联接或以某种方式获取所有相关信息,而无需对数据库进行多次查询
最佳答案
是的,您可以使用 LEFT JOIN
通过一个查询来完成此操作。
SELECT
* // I used *, you should modify it if you want to better control the output
FROM FoodTruck ft
LEFT JOIN MenuItems mi
ON mi.truckID = ft.truckID
LEFT JOIN Indgredient ind
ON ind.menuID = mi.menuID
左连接将保留左侧表中的记录,即使右侧表中找不到任何行。
请注意,FoodTruck
中的行可能会重复,因为每辆卡车都有多个菜单项。 MenuItem
也会发生同样的情况。
关于java - 三张表,两个外键和一名困惑的程序员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37515776/