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
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 😉
LISTAGG wäre es gewesen. 😉 Du kannst XML PATH als Lösung verwenden, um Strings in einer Spalte zu gruppieren und zu konkatenieren.
Hast recht, ist lange her 😃 Sql ist ja sowas von out 😃
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?
Vielleicht solltest Du in diesem Fall über Paging nachdenken.. Wer brauch auf einen schlag mehrere 1000 Einträge auf einem Windows Phone?
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
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.