Piszę aplikację, którą napisałem, aby uruchomić na Apache przy użyciu PHP i bazy danych MySQL. Jedno z zapytań wykorzystywało funkcje MySQL z Concat_WS
i Group_Concat
do łączenia kilku różnych kolumn w jeden ciąg, a następnie łączenia wszystkich elementów pogrupowanych według klauzuli Group_By
.Spełnienie Mysql Group_Concat w SQL Server
Jako przykład:
ID Name Candy
1 John M&Ms
1 John KitKat
Zapytanie:
Select Group_Concat(Concat_WS('-',Name, Candy) Separator '00--00') as UserCandy
From ExampleTable
Group By ID
Rezultat:
UserCandy
John-M&Ms00--00John-KitKat
Teraz staram się osiągnąć ten sam wynik w SQL Server 2008 przy użyciu PHP 5.4+.
Co próbowałem:
SELECT Stuff(name + ';' + candy, 1, 0, '-----') AS UserCandy
FROM test
Problem can be seen in the fiddle that I have setup.
Oczekiwany wynik będzie:
-----John;MMs-----John;KitKat
Wreszcie, to staje się jeszcze trudniejsze, gdy dodam więcej kolumn do mieszanki. Chcę scalić wyniki (jak pokazano powyżej), gdzie identyfikator jest taki sam. Działa to bardzo dobrze z group_concat
, ponieważ automatycznie łączy wiersze, które zostały zgrupowane razem.
@bluefeet Widziałem już to pytanie, ale staram się unikać używania XML. Naprawdę chciałem zachować ten sam format, który użyłem w poprzedniej wersji aplikacji. –
Istnieją sposoby na uzyskanie danych w odpowiednim formacie, ale w serwerze SQL nie ma łatwego sposobu łączenia danych z wielu wierszy w jeden. – Taryn
@bluefeet Jak mogę zmienić to pytanie, aby uzyskać odpowiedź i nie zamknąć? Poczyniłem dzisiaj masę lektury na ten temat i nadal nie mam go w sobie (oczywiście jak teraz jestem tutaj) –