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 вътрешно съединение или всяко друго съединение, за да върна един ред от Table1 и всички други свързани редове от Table2

  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