MySQL Workbench Query возвращает 1 строку, но тот же запрос в Jdbc возвращает 0 - PullRequest
0 голосов
/ 21 сентября 2018

Я написал запрос, который возвращает 1 строку, когда я запускаю его в MySQL Workbench:

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:

SELECT lot_num, block_num, base_price, SUM (цена) AS options_price ОТ лотов, КАК l ВНУТРЕННИЕ СОВМЕСТНЫЕ модели, КАК m ON l.model_id = m.id ПРИСОЕДИНЯЙТЕСЬ К ПРИМЕНЕНИЮ lot_optionsКАК ВКЛЮЧЕНО l.id = lo.lot_id ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПАРАМЕТРОВ КАК ВКЛЮЧЕНО lo.option_id = o.id GROUP BY l.id;

Это не дает мне ошибки или чего-либо еще.Просто пустой набор результатов.

Я не могу понять, где я ошибаюсь с этим запросом!Пожалуйста, дайте мне свое мастерство SQL!

1 Ответ

0 голосов
/ 21 сентября 2018

Я понял это.Я недостаточно знал о заявлениях 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
...