MySQL - Datensätze in Abfrage duplizieren
Hallo zusammen,
ich habe in MySQL eine Tabelle:
Spalte A:
1
2
3
4
5
...
Nun kann ich diese wie folgt abfragen:
"SELECT A FROM..."
Wie bekomme ich es aber nun hin, dass ich folgende Ausgabe habe:
1,A
1,B
2,A
2,B
3,A
3,B
...
Ich möchte also jeden Datensatz nochmal duplizieren und jeweils eine Spalte mit dem Wert "A" oder "B" anhängen.
Wie sieht hierfür die Abfrage aus?
ich habe in MySQL eine Tabelle:
Spalte A:
1
2
3
4
5
...
Nun kann ich diese wie folgt abfragen:
"SELECT A FROM..."
Wie bekomme ich es aber nun hin, dass ich folgende Ausgabe habe:
1,A
1,B
2,A
2,B
3,A
3,B
...
Ich möchte also jeden Datensatz nochmal duplizieren und jeweils eine Spalte mit dem Wert "A" oder "B" anhängen.
Wie sieht hierfür die Abfrage aus?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 195347
Url: https://administrator.de/forum/mysql-datensaetze-in-abfrage-duplizieren-195347.html
Ausgedruckt am: 22.12.2024 um 17:12 Uhr
10 Kommentare
Neuester Kommentar
Moin Maik87,
mit SQL geht es immer auch anders...
du kannst dir auch eine Tabelle "whatever" anlegen mit einem Char(1)-Textfeld namens SpalteB, zwei Datensätze mit dem Inhalt "A" und "B" anlegen und dann ein Statement wie folgt formulieren:
Nichtsdestotrotz - eigentlich werden erst mit SQL-Statements Daten durchflöht und dann kommt ein mehr oder weniger erwartetes Resultset zurück.
Der Ansatz "Ich habe ein feststehendes Endergebnis und bau mir die entsprechenden Quelldaten entsprechend" ist zumindest in den alten SQL-Spezifikationen meiner Jugend noch nicht so explizit ausformuliert.
Was ist denn die konkrete Aufgabenstellung, die hinter deiner Frage steht?
Grüße
Biber
mit SQL geht es immer auch anders...
du kannst dir auch eine Tabelle "whatever" anlegen mit einem Char(1)-Textfeld namens SpalteB, zwei Datensätze mit dem Inhalt "A" und "B" anlegen und dann ein Statement wie folgt formulieren:
SELECT dytable.SpalteA, whatever.SpalteB
FROM dytable, whatever
ORDER by 1, 2
Nichtsdestotrotz - eigentlich werden erst mit SQL-Statements Daten durchflöht und dann kommt ein mehr oder weniger erwartetes Resultset zurück.
Der Ansatz "Ich habe ein feststehendes Endergebnis und bau mir die entsprechenden Quelldaten entsprechend" ist zumindest in den alten SQL-Spezifikationen meiner Jugend noch nicht so explizit ausformuliert.
Was ist denn die konkrete Aufgabenstellung, die hinter deiner Frage steht?
Grüße
Biber
Ohne UNION ALL kommst Du hier nicht weiter.
Zwar andere Baustelle, aber warum speicherst Du nicht Anzahl m und Anzahl w in einer Zeile.
Alles eine Frage des Tabellenaufbaus.
Kommt das Ergebnis Deiner Tabelle nicht schon aus einer anderen Abfrage über die Mitarbeiter einer Abteilung?
Gruß Jörg
SELECT x.abteilung AS Abteilung,
'm' AS Geschlecht,
IFNULL(y.anzahl,0) AS Anzahl
FROM (SELECT DISTINCT a.abteilung FROM xy_tabelle AS a) AS x
LEFT JOIN (SELECT a.* FROM xy_tabelle AS a WHERE a.geschlecht = 'm') AS y USING(abteilung)
UNION ALL
SELECT x.abteilung AS Abteilung,
'w' AS Geschlecht,
IFNULL(y.anzahl,0) AS Anzahl
FROM (SELECT DISTINCT a.abteilung FROM xy_tabelle AS a) AS x
LEFT JOIN (SELECT a.* FROM xy_tabelle AS a WHERE a.geschlecht = 'w') AS y USING(abteilung)
Zwar andere Baustelle, aber warum speicherst Du nicht Anzahl m und Anzahl w in einer Zeile.
Abteilung Anz_M Anz_W
EDV 10 0
EINKAUF 2 1
Alles eine Frage des Tabellenaufbaus.
Kommt das Ergebnis Deiner Tabelle nicht schon aus einer anderen Abfrage über die Mitarbeiter einer Abteilung?
Gruß Jörg
[OT]
Aber "SplittingValues" ist immerhin sprechender als "whatever".
Grüße
Biber
[/OT]
Zitat von @Maik87:
Moin,
also ich habe es mit einer weiteren Tabelle "SplittingValues" gelöst - wie in Bibers letztem Beispiel.
Hmmja, wenn ich diese Dummytabelle für die m/w-Info sprechend zu benennen gehabt hätte, dann würde sie wohl "AlwaysSex" heissen...Moin,
also ich habe es mit einer weiteren Tabelle "SplittingValues" gelöst - wie in Bibers letztem Beispiel.
Aber "SplittingValues" ist immerhin sprechender als "whatever".
Grüße
Biber
[/OT]