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();}
但有没有办法在处理resultSet时不重复foodName,price,calories和specialComments?我只需要dustins dark rum
和rad rachels rumchata
,然后是每种成分。基本上,正如您从我的查询中看到的,这是基于来自第三个的信息从两个不同的表连接起来的。所以...它有点复杂。不确定如何继续或者我的sql查询是否可以进行微调...谢谢!!
答案 0 :(得分:0)
您无法在1个查询中执行此操作。您可以执行2个查询(一个用于菜单,第二个用于成分。)。
您的另一个选择是将GROUP_CONCAT函数与GROUP BY子句结合使用。见Can I concatenate multiple MySQL rows into one field?