2015-03-24 2 views
1

У меня есть две таблицы: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 

Возможно ли это?

ответ

1

Это слишком длинный комментарий.

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

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

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

+0

Итак, в основном я должен возвращать все строки, а затем упорядочивать значения в моем приложении? – Vilius

+0

@Vilius. , , Оба метода имеют одинаковое количество строк. Приложение просто выполняет форматирование удаления значений из первых нескольких столбцов, когда они повторяются. –

Смежные вопросы