• Keine Ergebnisse gefunden

MySQL: GROUP_CONCAT, DISTINCT (mit Übung) | informatikZentrale

N/A
N/A
Protected

Academic year: 2022

Aktie "MySQL: GROUP_CONCAT, DISTINCT (mit Übung) | informatikZentrale"

Copied!
9
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

MySQL

GROUP_CONCAT(...)

DISTINCT

(2)

Problem 1

In einem Feld i.d. Ergebnisliste

müssten mehrere Werte stehen, z.B.

Autor Buch

John Die Lust zu lügen

John, Heidi

Der Lügenalmanach

Heidi Ich lüge nie!

(3)

Anzahl Kunden pro Ort Name

9 Usal

SELECT

COUNT(*) AS 'Anzahl Kunden pro Ort', kunde.name FROM

kunden, orte WHERE

postleitzahl = ort_postleitzahl

-- ERGEBNIS OHNE "GROUP BY postleitzahl":

B EISPIEL

Hier müssten eigentlich 9 Namen drinstehen;

wir sehen aber nur den ersten.

(4)

Anzahl Kunden pro Ort Name

4 John

4 Herbert

2 Usal

SELECT

COUNT(*) AS'Anzahl Kunden pro Ort', kunden.name FROM

kunden, orte WHERE

postleitzahl = ort_postleitzahl GROUP BY postleitzahl

Auch hier müssten in der Spalte Name mehrere Namen stehen, wir sehen jeweils nur den ersten.

(5)

GROUP_CONCAT(feldname)

GROUP_CONCAT(kunden.name)

Anzahl Kunden pro Ort Name

4 John, Ludowika,

Herbert, Heinrich 4 Herbert, Heini, Hugo,

Hallo

(6)

GROUP_CONCAT(feldname

SEPARATOR 'Trennzeichen') GROUP_CONCAT(kunden.name SEPARATOR ' * ')

Anzahl Kunden pro Ort Name

4 John * Ludowika *

Herbert * Heinrich 4 Herbert * Heini * Hugo,

Hallo

2 Usal * Johannes

Alternative Syntax: Trennzeichen angeben

(7)

Anzahl Kunden pro Ort Namen der Kunden Ort

4 John, Ludowika,

Heinrich, Mary Freiburg 4 Carla, Sabina, Herbert Emmendingen

2 Usal, Johannes München

SELECT

COUNT(*) AS'Anzahl Kunden pro Ort', GROUP_CONCAT(kunden.name

SEPARATOR ', ') AS 'Namen der Kunden', orte.name AS Ort

FROM

kunden, orte WHERE

postleitzahl = ort_postleitzahl GROUP BY postleitzahl

(8)

Problem 2

Werte werden mehrfach ausgegeben:

SELECT

orte.name

FROM orte, kunden

WHERE ort_postleitzahl = postleitzahl

(für jeden Kunden wird einmal der Ort ausgegeben)

(9)

DISTINCT

SELECT

orte.name

FROM orte, kunden

WHERE ort_postleitzahl = postleitzahl

EnYernt doppelte Datensätze

(aber nur solche, die komple\ gleich sind!)

SELECT

DISTINCT ort.name FROM ort, kunde

WHERE kunde.ort_postleitzahl = ort.postleitzahl

Referenzen

ÄHNLICHE DOKUMENTE

Query -> Execute Current Query oder mit Tastenkürzel Strg + Eingabe (Strg + Shift + Eingabe für alle Statements im SQL-Editor)).. Taucht dann in der linken

[r]

ALTER TABLE kunden CHANGE altername neuername VARCHAR(255) NOT NULL. oder  um  nur  die  ANribute  zu  ändern

zeigt die Datensätze der Tabelle tabellenname an und sortiert sie nach den Werten im angegebenen Attribut absteigend (DESC) oder aufsteigend (ASC). ASC ist Standardwert, kann

Wenn Aliasse definiert werden, müssen sie verwendet

kunden (kunde_id, name, ñort_postleitzahl, kontostand_giro, kredit) orte (postleitzahl, name, einwohnerzahl,

Wir wollen nur Orte angezeigt bekommen, in denen mehr als 2 Kunden wohnen –2. also unsere schon gruppierte

Eine Abfrage erzeugen, die die Anzahl der Kunden in den Orten ausgibt (nur Orte mit mehr als zwei Kunden).