Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Sorry, aber der Text ist nicht komplett übernommen worden. Hier noch einmal:
Eine Spalte einer Tabelle "Auto" soll soll in zwei Spalten aufgeteilt werden:
Art.Nr. Feld.Nr. Artikel
100 01 Audi
100 02 A3
100 03 rot
200 01 BMW
200 02 3er
200 03 blau
Spalte 1 soll unverändert bleiben. Spalte 2 soll in Automarke, Modell und Farbe aufgeteilt werden:
Art.Nr. Automarke Modell Farbe
100 Audi A3 rot
200 BMW 3er blau
Dazu habe ich folgende Abfrage versucht:
select Art.Nr.,
(select Artikel from Auto where FeldNr. = '01')Automarke
from Auto
Die Fehlermeldung besagt, dass die Unterabfrage mehr als eine Zeile liefert.
Ist mein Ansatz einer Unterabfrage falsch oder habe ich nur was vergessen?
Es gibt mehrere Wege aber deine Syntax ist in jedem Fall nicht ganz richtig.
Angenommen deine Tabelle Auto hätte die ursprünglichen Spalten Art.Nr., Feld.Nr. und Artikel. Dazu kämen jetzt Spalten Marke, Modell und Farbe, die wären erstmal leer.
Mit:
Code:
UPDATE t1
SET t1.Marke = t1.Artikel,
t1.Modell = t2.Artikel,
t1.Farbe = t3.Artikel
FROM [Auto] AS t1
LEFT JOIN [Auto] AS t2
ON t1.[Art.Nr.] = t2.[Art.Nr.]
AND t2.[Feld.Nr.] = '02'
LEFT JOIN [Auto] AS t3
ON t1.[Art.Nr.] = t3.[Art.Nr.]
AND t3.[Feld.Nr.] = '03'
WHERE t1.[Feld.Nr.] = '01'
könntest du die neuen Spalten für die Zeilen befüllen, die die Marke enthalten. Alle Daten stünden dann in diesen Zeilen und den neuen Spalten, alte Zeilen und Spalten könnten gelöscht werden.
vielen Dank für deine schnellen Rückmeldungen!!! Bin hier gerade Einzelkämpferin und schwimme in Arbeit, deshalb meine "verspätete" Rückmeldung. Vielleicht noch vorweg: Ich bin ein absolutes Greenhorn und muss diese Aufgabe – „Sie machen das schon“ – zusätzlich erledigen. Dies zu meiner Entschuldigung.
Ich habe mich - erneut (Sorry!) - unglücklich ausgedrückt. Ich muss die Tabelle aus einer Datenbankabfrage heraus erstellen. Die Datenbanktabelle darf dabei nicht verändert werden.
Ich glaube dann suchst du das ganze nur als Select:
Code:
SELECT
t1.Artikel AS Marke,
t2.Artikel AS Modell,
t3.Artikel AS Farbe
FROM [Auto] AS t1
LEFT JOIN [Auto] AS t2
ON t1.[Art.Nr.] = t2.[Art.Nr.]
AND t2.[Feld.Nr.] = '02'
LEFT JOIN [Auto] AS t3
ON t1.[Art.Nr.] = t3.[Art.Nr.]
AND t3.[Feld.Nr.] = '03'
WHERE t1.[Feld.Nr.] = '01'
das kannst du mit einer gruppierten Abfrage und CASE...WHEN... lösen:
Code:
SELECT [Art.Nr.],
MAX(CASE WHEN [Feld.Nr]='01' THEN [Artikel] ELSE '' END) as Marke,
MAX(CASE WHEN [Feld.Nr]='02' THEN [Artikel] ELSE '' END) as Modell,
MAX(CASE WHEN [Feld.Nr]='03' THEN [Artikel] ELSE '' END) as Farbe
FROM [Auto]
GROUP BY [Art.Nr.]
Hallo Ukulele, TAUSEND-Dank!!!! Hat super geklappt. Vielen herzlichen Dank für deine Geduld mit mir.
Du bist mit Gold nicht aufzuwiegen. Schönes Wochenende.
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
Diese Seite verwendet Cookies, um Inhalte zu personalisieren und dich nach einem Login angemeldet zu halten, wenn du registriert bist.
Durch die weitere Nutzung unserer Webseite erklärst du dich damit einverstanden.