Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[MySQL4] GROUP BY mit Strings

Empfohlene Antworten

Veröffentlicht

Hallo zusammen,

ich habe einen Query, indem ich ein GROUP BY verwende.

Wenn man ein Group by z.b auf ein INT Feld macht, dann addiert er ja diese Werte zusammen. Wie mach ich jetzt aber, bei einem String Feld (varchar), dass er die werte der betroffenen Felder aneinander kettet?

Beispiel mit Int:


SELECT produkt, SUM(preis) FROM bestellung GROUP BY produkt

Jetzt sollten ja alle Produkte einmal ausgegeben werden und der gesamtpreis des ganzen in "preis" stehen (also die preise der einzelnen Produkte aufaddiert) Beispiel mit Varchar:

SELECT produkt, ???(kunde) FROM bestellung GROUP BY produkt

Jetzt sollten ja alle Produkte einmal ausgegeben werden und die Namen der Kunden aneinander gekettet in "kunde" stehen.

Wie stell ich das am besten an?

Gruß,

Markus

das wird mysql selbst nicht können, weil aggregatfunktionen wie SUM nur numerische werte annehmen. ich hab das nur einmal hier gesehen, wo mittels CREATE AGGREGATE FUNCTION eine UDF erstellt wird. nachteil ist halt, dass man das programmieren muss, aber dann als native funktion verwenden kann:

SELECT produkt, group_concat(kunde, ' ') FROM bestellung GROUP BY produkt;

s'Amstel

Beispiel mit Varchar:


SELECT produkt, ???(kunde) FROM bestellung GROUP BY produkt

Jetzt sollten ja alle Produkte einmal ausgegeben werden und die Namen der Kunden aneinander gekettet in "kunde" stehen.

Wie stell ich das am besten an?

Gruß,

Markus

Sorry aber das ist einfach Quatsch. Erstens ist der Name kein PK also wäre die Ausgabe

Milch MüllerMüllerMüllerMüllerSchmitz eh ohne Sinn

Zweitens ist ein Statement ohne einer Where Bedingung und ohne Name als PK nicht performant

Drittens für welche Programmiersprache brauchst du das ? ich kann mir keine Sprache vorstellen, die mit diesem Gewusel der Namen was sinnvolles anfangen könnte.

Hi,

das wird mysql selbst nicht können, weil aggregatfunktionen wie SUM nur numerische werte annehmen. ich hab das nur einmal

Danke für den Hinweis, werd ich mir anschauen.

Sorry aber das ist einfach Quatsch. Erstens ist der Name kein PK...

So ein quatsch. Ist doch total egal ob PK oder nicht..

..also wäre die Ausgabe

Milch MüllerMüllerMüllerMüllerSchmitz eh ohne Sinn..

Wer sagt, dass das ganze nicht einfach nur eine Grundidee ist, die ich noch weiter ausbaue... Sicherliche würde da auf jeden Fall noch ein Trennzeichen hineinkommen....

Zweitens ist ein Statement ohne einer Where Bedingung und ohne Name als PK nicht performant
Das ganze war natürlich nur ein Beispiel um das ganze so einfach wie Möglich anschaulich zu mache...

Drittens für welche Programmiersprache brauchst du das ?

Das ganze ist ja wohl total unabhähgig von der Programmiersprache... Aber für dich: Ich verwende PHP. Ich verwende ein Listen-Erstellungs-Framework, das diese Funktionalität nicht so einfach hergibt. Wenn der SQL aber das entsprechende Resultset liefern würde, dann wäre das ganze ohne größere Anpassungen für mich nuztbar...

ich kann mir keine Sprache vorstellen, die mit diesem Gewusel der Namen was sinnvolles anfangen könnte.

Naja in welcher Sprache hat man denn Probleme Strings an einem Trennzeichen aufzuteilen und zu verarbeiten?

@baba007:

Danke für den destruktiven Kommentar. Ist natürlich EINFACH zu Urteilen wenn man die Rahmenbedingungen NICHT kennt...

Danke an Amstelchen für die Mühe!

Gruß,

Markus

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.