#sql #select #join
#sql #выберите #Присоединиться
Вопрос:
У меня есть две таблицы — report
и bouydata
report
------
id sun
1 overcast
bouydata
----------
reportid bouy winddir
1 46026 340
1 46027 345
Я хочу выделить все 3 строки в одну строку. Вот мой запрос:
SELECT report.id, sun, bouy1.bouy as bouy1, bouy1.winddir as winddir1, bouy2.bouy as bouy2, bouy2.winddir as winddir2
FROM report
LEFT JOIN bouydata bouy1
ON report.id = bouy1.reportid
LEFT JOIN bouydata bouy2
ON report.id = bouy2.reportid
По какой-то причине я возвращаю четыре строки:
1 Slightly Overcast 46026 340 46026 340
1 Slightly Overcast 46026 340 46027 345
1 Slightly Overcast 46027 345 46026 340
1 Slightly Overcast 46027 345 46027 345
Это не выбор только уникальных строк и объединение их в одну строку. Кто-нибудь может помочь мне получить желаемый результат:
1 Slightly Overcast 46026 340 46027 345
Комментарии:
1. Почему вы объединяетесь
bouydata
дважды?2. смотрите мой комментарий к ответу Марка
Ответ №1:
Я не знаю, почему вы выполняете двойное объединение с теми же таблицами и теми же условиями. Это просто дублирует информацию.
SELECT report.id, sun, bouy, winddir
FROM report
LEFT JOIN bouydata
ON report.id = bouydata.reportid
дало бы вам:
report.id sun bouy winddir
1 overcast 46026 340
1 overcast 46027 345
Комментарии:
1. Потому что я хочу, чтобы только 1 строка с обеими строками из bouydata была объединена в строку из отчета.
2. на самом деле я собираюсь разбить его на два отдельных запроса. Если бы я сделал это таким образом, мой запрос был бы чрезвычайно длинным (учитывая, что у меня на самом деле есть 3 bouys для каждого отчета, и каждая строка bouydata содержит 6 столбцов, а каждая строка отчета содержит 8 столбцов, так что это был бы запрос на 32 столбца). Мне все еще любопытно, как решить проблему. спасибо за вашу помощь