因此,我自己都对如何从三个表中提取信息感到困惑。让我对此进行清楚的设置(我希望)...
我有三个表FoodTruck
,MenuItems
和Ingredients
。每个食品卡车可以有多个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
也将发生相同的情况。