Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
SQL Statement JOIN mit Concat aller Kind Felder
baer999
myCSharp.de - Member



Dabei seit:
Beiträge: 382

Themenstarter:

SQL Statement JOIN mit Concat aller Kind Felder

beantworten | zitieren | melden

Hallo,

ich habe eine SQL Server DB und möchte eine Tabelle Kunden mit Telefonnummern verknüpfen.
Im SELECT möchte ich als Resultat pro Kunde eine Zeile zurückbekommen + eine Spalte mit allen Telefonnummern (getrennt mit ENTER oder SEMICOLON).

Geht das, falls ja wie?

Hier mein bisheriges Statement:

SELECT DISTINCT 
                         customer.City, customer.Company, customer.Cus_ID, customer.Cus_Nr, customer.Email, customer.Firstname, customer.Lastname, 
                         customer.Postcode, customer.Street
FROM            customer INNER JOIN
                         phone ON customer.Cus_ID = phone.Cus_ID
WHERE        (phone.Prefix LIKE @Text) OR
                         (customer.Firstname LIKE @Text)

thx
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hallo,

das ist eher eine Sache, um sie im Code zu behandeln. Geht auch auf Datenbankseite (TSQL). Wenn ich mich nicht irre hätte es auf Oracle mit Decode geklappt, aber imho gibts den Befehl auf SqlServer nicht, und das ist auch gut so ;)
private Nachricht | Beiträge des Benutzers
D-eath
myCSharp.de - Member



Dabei seit:
Beiträge: 240
Herkunft: Ingolstadt

beantworten | zitieren | melden

LISTAGG wäre es gewesen. ;) Du kannst XML PATH als Lösung verwenden, um Strings in einer Spalte zu gruppieren und zu konkatenieren.
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Hast recht, ist lange her :) Sql ist ja sowas von out :)
private Nachricht | Beiträge des Benutzers
baer999
myCSharp.de - Member



Dabei seit:
Beiträge: 382

Themenstarter:

beantworten | zitieren | melden

Habe es auch im Code behandelt indem ich über alle Ergebnisszeilen eine Schleife machte und jeweils die Telefonnummer per SQL dazugelesen habe und in die Spalte geschrieben / konkatiniert habe.

Allerdings war es mega langsam (mehrere 1000 Zeilen Ergebnis mit je einer Phone Abfrage...).

Was meint ihr sonst mit "im Code behandeln"?

Gibt es da performantere Lösungen?
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Vielleicht solltest Du in diesem Fall über Paging nachdenken.. Wer brauch auf einen schlag mehrere 1000 Einträge auf einem Windows Phone?
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3780
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Beim Lesen mit einem DataReader sollte das recht schnell gehen, auch bei mehreren Tausend Zeilen.

unconnected : Es geht hier im eine Desktop-Anwendung, nicht um eine Windows Phone Anwendung.

Meine Anwender wollen auch oft viele Einträge auf einmal sehen, Paging gibt es deshalb bei mir nicht.

Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Stimmt hatte "(mehrere 1000 Zeilen Ergebnis mit je einer Phone Abfrage...)." falsch gedeutet.
Aber das ändert trotzdem nichts daran das selbst 1000 Zeilen für einen Desktop nicht auf einmal anzeigbar sind.

Ich stimme Dir aber zu das das eigentlich fix von statten gehen müsste.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von unconnected am .
private Nachricht | Beiträge des Benutzers