AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Inhalt einer Tabelle als neue Felder

Inhalt einer Tabelle als neue Felder

Ein Thema von llaprosper · begonnen am 7. Jul 2016 · letzter Beitrag vom 7. Jul 2016
Antwort Antwort
llaprosper

Registriert seit: 7. Jul 2016
4 Beiträge
 
#1

Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 17:17
Datenbank: SQL • Version: 2012 • Zugriff über: Management Studio
Hallo Zusammen,

ich bin SQL Anfänger und habe keine Ahnung wie ich eine Tabelle für mich vernünftig nutzen kann.
So sieht es aus:
Key Value Attribut

001 Name1 P0002-NACHN
001 Nummer1 P0002-Nr
001 Anrede1 P0002-An
001 Geschlecht1 P0002-G
002 Name2 P0002-NACHN
002 Nummer2 P0002-Nr
002 Anrede2 P0002-An
002 Geschlecht2 P0002-G

Der Key ist die Personalnummer eines Users
Ich muß die Daten in eine andere Datenbank importieren. Dort gibt es z.B. die Tabelle "Person" wo dann jeweils für die Personen die
Attribute aus Feld "Attribut" importiert werden müssen.
Jetzt habe ich hier im Feld "Value" aber ALLE User. Damit kann ich ja nix anfangen. Es müsste also so aussehen:

Pers Name Nummer Anrede Geschlecht

001 Name1 Nummer1 Anrede1 Geschlecht1
002 Name2 Nummer2 Anrede2 Geschlecht2

Habt ihr da eine Idee?

Beste Grüße
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 17:49
Ungefähr so
SQL-Code:
SELECT
  k.Key as Pers,
  nachn.Value as Name,
  nr.Value as Nummer,
  an.Value as Anrede,
  g.Value as Geschlecht
FROM ( select distinct Key from table1 ) k
JOIN ( select Key, Value from table1 where Attribut='P0002-NACHN' ) nachn ON nachn.Key=k.Key
JOIN ( select Key, Value from table1 where Attribut='P0002-Nr' ) nr ON nr.Key=k.Key
JOIN ( select Key, Value from table1 where Attribut='P0002-An' ) an ON an.Key=k.Key
JOIN ( select Key, Value from table1 where Attribut='P0002-G' ) g ON g.Key=k.Key
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
llaprosper

Registriert seit: 7. Jul 2016
4 Beiträge
 
#3

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 17:56
Cool...Danke. Werde ich morgen auf der Arbeit mal probieren. Jetzt mache ich mal Feierabend!!

Gruß
Andreas
  Mit Zitat antworten Zitat
llaprosper

Registriert seit: 7. Jul 2016
4 Beiträge
 
#4

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 18:34
Klappt nicht:
Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'FROM'.
Msg 102, Level 15, State 1, Line 6
Incorrect syntax near 'k'.
Msg 102, Level 15, State 1, Line 7
Incorrect syntax near 'nachn'.
Msg 102, Level 15, State 1, Line 8
Incorrect syntax near 'an'.

SELECT
k.[Key] as Pers,
nachn.[Value] as Name,
an.[aValue] as Anrede,
FROM ( select distinct [Key] from [mxmc_db].[dbo].[table1] ) k
JOIN ( select Key, aValue_neu FROM [mxmc_db].[dbo].[table1] where AttrName='P0002-NACHN' ) nachn ON nachn.Key=k.Key
JOIN ( select Key, Value FROM [mxmc_db].[dbo].[table1] where AttrName='P0002-TEXT_P0002_ANRED' ) an ON an.Key=k.Key

Geändert von llaprosper ( 7. Jul 2016 um 18:36 Uhr)
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 18:39
Überprüfe die Syntax Deines Statements.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 18:44
Wie schnell doch so ein Morgen kommt

Darum schrieb ich ja auch "Ungefähr so". Das konkrete Statement für MSSQL musst du dir selber zusammenbauen, aber das Prinzip bleibt gleich.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
llaprosper

Registriert seit: 7. Jul 2016
4 Beiträge
 
#7

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 18:58
Hatte keine Ruhe
Hab es jetzt hin bekommen.
Allerdings stimmen nur Nachname und Anrede
Habe jetzt noch ein Join hinzugefügt mit Vorname und das ganze mal mit Where auf einen einzigen Key dezimiert.
Jetzt habe ich tausend mal den selben Key (mich in diesem Fall) da jeder Vorname genommen wird und nicht nur meiner.

Edit:
Sorry, hatte nen Fehler eingebaut...Alles klappt
TOP DANKE!!

Geändert von llaprosper ( 7. Jul 2016 um 19:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Inhalt einer Tabelle als neue Felder

  Alt 7. Jul 2016, 19:24


Ich hoffe ja mal, dass du einen Index auf Key und Attribut hast (unique oder sogar als primary key) sonst wird diese Abfrage mit steigenden Datensätzen schnarchlangsam.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz