SQL возвращает внутреннее соединение в одной строке

У меня есть две таблицы:

Table1:

ID | Column 1 | Column 2
1  | Value 1  | Value 2

Table 2:
ID | Column 3 | Column 4
1  | Value 4  | Value 5
1  | Value 6  | Value 7

На данный момент мой запрос:

SELECT * FROM Table1 INNER JOIN Table2 ON Table1.id = Table2.id ;

возвращает:

id |    Column 1 |  Column 2 |  id  |   Column 3 |  Column 4
1  |    Row 1    |    Row 1  |   1  |   Row 1    |    Row 1
1  |    Row 1    |    Row 1  |   1  |   Row 2    |    Row 2
1  |    Row 1    |    Row 1  |   1  |   Row 3    |    Row 3

Я хочу использовать внутреннее соединение SQL или любое другое соединение для возврата одной строки из таблицы 1 и всех других связанных строк из таблицы 2.

  id |  Column 1 |  Column 2 |  id  |   Column 3 |  Column 4
  1  |  Row 1    |    Row 1  |   1  |   Row 1    |    Row 1
                                 1  |   Row 2    |    Row 2
                                 1  |   Row 3    |    Row 3

Это возможно?


person Vilius    schedule 24.03.2015    source источник


Ответы (1)


Это слишком долго для комментария.

Вы можете делать в SQL все, что хотите, но я не рекомендую вам пытаться это делать. Во-первых, в MySQL он более громоздкий, чем в других диалектах (из-за отсутствия оконных функций).

Что еще более важно, это нарушает одну из ключевых идей реляционных баз данных: таблицы и наборы результатов представляют собой неупорядоченные наборы. Порядок строк не должен иметь значения. В вашем наборе результатов есть большая разница между первой строкой и остальными строками. Значение многих строк зависит от того, что стоит перед ними. И в неупорядоченных наборах нет «до».

Хотя получение этих результатов в SQL представляет собой сложную задачу, лучше выполнять форматирование такого типа на прикладном уровне. Среды прикладного программирования больше подходят для настройки результатов для представления.

person Gordon Linoff    schedule 24.03.2015
comment
Итак, в основном я должен вернуть все строки, а затем упорядочить значения в своем приложении? - person Vilius; 24.03.2015
comment
@Вилиус. . . Оба метода имеют одинаковое количество строк. Приложение просто выполняет форматирование, удаляя значения из первых нескольких столбцов, когда они повторяются. - person Gordon Linoff; 24.03.2015