Woocommerce Abfrage Zeilen zusammenfassen

AndreBaust

Neuer Benutzer
Beiträge
2
Hallo,

Ich habe eine SQL Abfrage über die Buchungsinformationen der einzelnen Personen generiert. Es wird die Sepa Daten und die angemeldeten Personen abgefragt.
Nun kommt es vor, dass ein Sepa Inhaber mehre Personen angemeldet hat. Somit sind mehrere Zeilen doppelt. Ich möchte die Zeilen mit den gleichen IBAN's zusammenfassen, aber die einzelnen Teilnehmer sollen sichtbar bleiben. Diese könne auch in einer Zeile zusammengefasst auftauchen.

Momentan sieht meine Abfrage so aus:

SELECT `zkzCrojUwoocommerce_order_items`.`order_item_name` as 'Order_item_name'
, CONCAT(`zkzCrojUpostmeta2`.`meta_value`,' ',`zkzCrojUpostmeta`.`meta_value`) as 'Rechungsempfänger'
, `zkzCrojUpostmeta3`.`meta_value` as 'IBAN'
, `zkzCrojUpostmeta4`.`meta_value` as 'BIC'
, `zkzCrojUpostmeta5`.`meta_value` as 'Mandat'
, `zkzCrojUpostmeta6`.`meta_value` as 'Datum'
, `zkzCrojUwoocommerce_order_itemmeta3`.`meta_value` as 'Betrag'
, CONCAT (`zkzCrojUwoocommerce_order_itemmeta2`.`meta_value`, ' ', `zkzCrojUwoocommerce_order_itemmeta`.`meta_value`) as 'Teilnehmer'
FROM `zkzCrojUpostmeta`
INNER JOIN `zkzCrojUwoocommerce_order_items` ON `zkzCrojUwoocommerce_order_items`.`order_id` = `zkzCrojUpostmeta`.`post_id`
INNER JOIN `zkzCrojUwoocommerce_order_itemmeta` ON `zkzCrojUwoocommerce_order_itemmeta`.`order_item_id` = `zkzCrojUwoocommerce_order_items`.`order_item_id`
INNER JOIN `zkzCrojUwoocommerce_order_itemmeta` zkzCrojUwoocommerce_order_itemmeta2 ON `zkzCrojUwoocommerce_order_itemmeta2`.`order_item_id` = `zkzCrojUwoocommerce_order_itemmeta`.`order_item_id`
INNER JOIN `zkzCrojUwoocommerce_order_itemmeta` zkzCrojUwoocommerce_order_itemmeta3 ON `zkzCrojUwoocommerce_order_itemmeta3`.`order_item_id` = `zkzCrojUwoocommerce_order_itemmeta2`.`order_item_id`
INNER JOIN `zkzCrojUpostmeta` zkzCrojUpostmeta2 ON `zkzCrojUpostmeta2`.`post_id` = `zkzCrojUpostmeta`.`post_id`
INNER JOIN `zkzCrojUpostmeta` zkzCrojUpostmeta3 ON `zkzCrojUpostmeta3`.`post_id` = `zkzCrojUpostmeta2`.`post_id`
INNER JOIN `zkzCrojUpostmeta` zkzCrojUpostmeta4 ON `zkzCrojUpostmeta4`.`post_id` = `zkzCrojUpostmeta3`.`post_id`
INNER JOIN `zkzCrojUpostmeta` zkzCrojUpostmeta5 ON `zkzCrojUpostmeta5`.`post_id` = `zkzCrojUpostmeta4`.`post_id`
INNER JOIN `zkzCrojUpostmeta` zkzCrojUpostmeta6 ON `zkzCrojUpostmeta6`.`post_id` = `zkzCrojUpostmeta5`.`post_id`
WHERE (`zkzCrojUpostmeta`.`meta_key` = '_billing_first_name' AND `zkzCrojUpostmeta2`.`meta_key` = '_billing_last_name' AND `zkzCrojUpostmeta3`.`meta_key` = '_german_market_sepa_iban' AND `zkzCrojUpostmeta4`.`meta_key` = '_german_market_sepa_bic' AND `zkzCrojUpostmeta5`.`meta_key` = '_german_market_sepa_mandate_reference' AND `zkzCrojUpostmeta6`.`meta_key` = '_paid_date' AND `zkzCrojUwoocommerce_order_itemmeta3`.`meta_key` = '_line_total' AND `zkzCrojUwoocommerce_order_itemmeta`.`meta_key` = 'Vorname ' AND `zkzCrojUwoocommerce_order_itemmeta2`.`meta_key` = 'Nachname')
ORDER BY `zkzCrojUwoocommerce_order_items`.`order_item_name` asc, `zkzCrojUwoocommerce_order_itemmeta2`.`meta_value` asc

So sieht die Tabelle momentan aus

AusfahrtRechungsempfängerIBANBICMandatDatumBetragTeilnehmer
TagesfahrtB. JenniferDE3166**BRUSDE66XXX
2578​
2022-11-28 10:54:09
40​
B. Jennifer
TagesfahrtR. ElisaDE445479**GENODE61SPE
2553​
2022-11-21 09:52:25
35​
R. Elisa
TagesfahrtR. ElisaDE445479**GENODE61SPE
2553​
2022-11-21 09:52:25
35​
R. Noah
TagesfahrtR. JohannesDE112004**COBADEHD044
2449​
2022-09-08 19:32:04
40​
R. Johannes
TagesfahrtR. JohannesDE112004**COBADEHD044
2449​
2022-09-08 19:32:04
55​
R. Laura
TagesfahrtR. JohannesDE112004**COBADEHD044
2449​
2022-09-08 19:32:04
55​
R. Felix
TagesfahrtB. JenniferDE316635**BRUSDE66XXX
2578​
2022-11-28 10:54:09
40​
R. Oliver


Ich hoffe ihr könnt mir weiterhelfen
 
Werbung:
Du willst also aggregieren, in PostgreSQL z.B. via string_agg(). Beachte, daß alle nicht-aggregierten Spalten dann gruppiert werden müssen.
 
Werbung:
Nun, Du solltest Dich mit den genannten Stichworten beschäftigen. Ich hab kein MySQL (zum Glück!), und auch nicht Deine Tabellen. Stelle das doch einfach mal in etwas kleiner nach und sieh, wie es funktioniert. Dabei lernst Du dann auch ...
 
Zurück
Oben