mysql> SELECT mi.foodName, mi.price, mi.calories, mi.specialComments,
ind.ingredient FROM FoodTruck ft LEFT JOIN
Menu mi ON mi.truckID = ft.truckID LEFT JOIN Ingredients ind ON
ind.menuID = mi.menuID;
+----------------------+-------+----------+-----------------+-----------------+
| foodName | price | calories | specialComments | ingredient |
+----------------------+-------+----------+-----------------+-----------------+
| NULL | NULL | NULL | NULL | NULL |
| NULL | NULL | NULL | NULL | NULL |
| dustins dark rum | 3.5 | 285 | yummy | dark rum |
| dustins dark rum | 3.5 | 285 | yummy | ice |
| rad rachels rumchata | 3 | 375 | dairy free | rumchata |
| rad rachels rumchata | 3 | 375 | dairy free | almond milk |
| rad rachels rumchata | 3 | 375 | dairy free | chocolate syrup |
| rad rachels rumchata | 3 | 375 | dairy free | ice |
| NULL | NULL | NULL | NULL | NULL |
| NULL | NULL | NULL | NULL | NULL |
+----------------------+-------+----------+-----------------+-----------------+
10 rows in set (0.01 sec)
所以,这里是mySql查询和结果,通过PreparedStatement,保存在ResultSet中。我究竟如何获取信息?我知道我可以有: while(rs.next()) { int x = resultSet.getInt(); String y = resultSet.getString();}
但是有没有办法在处理结果集时不重复食物名称、价格、卡路里和特殊注释?我只需要dustins dark rum
和rad rachels rumchata
,然后是每种成分。基本上,正如您从我的查询中看到的那样,这是根据第三个表的信息从两个不同的表连接的。所以。。。这有点复杂。不确定如何继续或是否可以微调我的 sql 查询......谢谢!!
您不能在 1 个查询中执行此操作。您可以执行 2 个查询(一个用于菜单,第二个用于成分)。
您的另一个选择是将类似于 GROUP_CONCAT 函数的内容与 GROUP BY 子句结合使用。请参阅我可以将多个 MySQL 行连接成一个字段吗?