我编写了一个查询,该查询在MySQL Workbench中运行时返回1行:
SELECT lot_num, block_num, base_price, SUM(price) AS options_price FROM lots AS l
INNER JOIN models AS m ON l.model_id = m.id
INNER JOIN lot_options AS lo ON l.id = lo.lot_id
INNER JOIN options AS o ON lo.option_id = o.id
GROUP BY l.id
当我尝试在Jdbc中运行该程序时,得到0条结果。这是我格式化Jdbc字符串的方式:
从手数中选择lot_num,block_num,base_price,SUM(price)AS options_price l内部联接模型AS m ON l.model_id = m.id内部联接lot_options AS lo ON l.id = lo.lot_id内部联接options AS o ON lo.option_id = o.id GROUP BY l.id;
这不会为我提供任何错误或其他信息。只是一个空结果集。
我无法弄清楚此查询出了什么问题!请让我精通SQL!
答案 0 :(得分:0)
我知道了。我对JOIN语句不了解。多对多表需要LEFT OUTER连接。我不知道为什么原始查询可以在Workbench中工作,而不能在Jdbc连接中工作。两者都可以!
SELECT lot_num, block_num, models.base_price, SUM(o.price) FROM lots
INNER JOIN models ON models.id = lots.model_id
LEFT OUTER JOIN lot_options AS lo ON lots.id = lo.lot_id
LEFT OUTER JOIN options AS o ON lo.option_id = o.id
GROUP BY lots.id