SQL Syntax Werte in Tuple zusammenfassen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
cbesi
User
Beiträge: 41
Registriert: Dienstag 11. August 2020, 22:04

Hallo zusammen,

ich habe das Problem das ich für mein Script Daten benötige die etwas verschachtelt sind.

Hier mein Select:

Code: Alles auswählen

SELECT 
t1.ArtikelID,
t1.ArtikelNummer,
t2.XDateienID,
t1.Bezeichnung,
t1.langtext,
t1.K_Sortierung,
t1.K_Kaliber,
t1.Tara,
t2.DateienID,
t3.DateiName,
t3.DateiInhalt,
t1.Zeitstempel,
t4.K_LeergutArtikelID

	  
  FROM [TestDaten].[dbo].[Artikel] t1
  inner join dbo.XDateien t2 on t1.BilderID = xdateienid inner join dbo.dateien t3 on t2.DateienID = t3.DateienID  inner join dbo.K_ArtikelLeergut t4 on t1.ArtikelID = t4.K_Artikelid where t1.ArtikelNummer = '1458'  order by t1.artikelid

Das Problem ist aber das der join in ArtikelLeergut mehrere Werte hat. Ich möchte aber den Select so ausführen, das ich nur eine Zeile zurück bekomme, die Ergebnisse der Spalte K_ArtikelLeergut sollen in einen Tuple zusammengefasst werden.

Kann mir da jemand helfen?
__deets__
User
Beiträge: 14528
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das geht mit SQL meines Wissens nach nicht, weil es keine Listentypen oder Ähnliches als spalten kennt. Du musst die Daten dann selbst nochmal gruppieren.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@__deets__: manche SQL-Datenbanken können das, array_agg oder listagg oder irgendwas mit ´with recursive`.

@cbesi: Du brauchst dafür mehrere Abfragen, eine für die ArtikelID, und dann jeweils eine, um für jede ArtikelID dein Leergut abzufragen. Mit einem ORM wie SQLalchemy kann man das ganz transparent machen, so dass Du von den Abfragen gar nichts mitbekommst.
Antworten