因此,我自己都对如何从三个表中提取信息感到困惑。让我对此进行清楚的设置(我希望)...

我有三个表FoodTruckMenuItemsIngredients。每个食品卡车可以有多个menuItem(与FoodTruck truckID关联有truckID列),每个menuItem可以具有多种配料(与MenuItem menuID关联有menuID列)。

因此,我对mysql命令完全困惑以获取我真正想要的信息(联接仍然让我很困惑),因为最后我希望能够向用户显示Food Truck的菜单。它看起来像一个包含menuItems的大菜单,其中包含配料。

如果有一个选择查询将获取所有这些信息,那么输出将包括什么?我的意思是,它将如何呈现?数组的menuItems,然后数组的成分?如果我得到了信息,那么我可以在使用JDBC时弄清楚如何处理它...

忘了添加:在菜单表中有列(主键:menuID,foodName,price,foodType,specialComments)...我需要所有这些。在“成分”表中,我具有名称和menuID,但实际上只需要显示名称。

我已经完成了大部分需要的查询。只是我现在要显示完整菜单。我正在使用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也将发生相同的情况。

07-26 05:34