Tabelle um Spalte erweitern

Bjarne

Neuer Benutzer
Beiträge
4
Hallo zusammen,

mir liegt folgende Tabelle vor:

A B
1 1
1 2

Ich würde gerne eine dreitte Spalte erzeugen, die für jede Zeile der bestehenden Tabelle die Einträge 1, 2, 3 enthält. Das Ergebiss entspricht dann quasi einem Cross Join mit der Tabelle:

C
1
2
3

Als Ergebnis käme dann folgendes heraus:

A B C
1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3

Wie kann ich diese Operation ohne die Hilfstabelle C durchführen? Vielen Dank für eure Hilfe!
 
Werbung:
Wie kann ich diese Operation ohne die Hilfstabelle C durchführen? Vielen Dank für eure Hilfe!

Ich weiß nicht, ob der M$SQL was vergleichbares wie generate_series() in PostgreSQL hat:

Code:
test=*# select * from bjarne ;
 a | b
---+---
 1 | 1
 1 | 2
(2 rows)

test=*# select * from bjarne cross join (select * from generate_series(1,3) as c) s;
 a | b | c
---+---+---
 1 | 1 | 1
 1 | 2 | 1
 1 | 1 | 2
 1 | 2 | 2
 1 | 1 | 3
 1 | 2 | 3
(6 rows)
 
Super, vielen Dank für die Antwort! Gibt es auch eine Möglichkeit das zu joinende Array händisch zu definieren? In meinem Fall sind es drei Strings, die ich an die existierende Tabelle joinen möchte. Danke dir!
 
Hi Bjarne.

Klar geht das:
Code:
SELECT *
FROM bjarne
CROSS JOIN (
    SELECT "String 1" AS string
    UNION
    SELECT "String 2" AS string
    UNION
    SELECT "String 3" AS string
)

Gruß
Hony
 
Hi Hony,
das funktioniert bei mir leider so nicht. Fehler: Kein UNION möglich ohne FROM statement. Hast du noch andere Vorschläge? Vielen Dank schonmal!
 
Werbung:
Na dann versuchen wir es eben mit tricksen. ;)

Code:
SELECT *
FROM bjarne
CROSS JOIN (
    SELECT "String 1" AS string FROM bjarne
    UNION
    SELECT "String 2" AS string FROM bjarne
    UNION
    SELECT "String 3" AS string FROM bjarne
)
 
Zurück
Oben