Am 31.03.13 schrieb Axel Schwenke:
> Volker Englisch <
23C5...@rsli.de> wrote:
>
> Du suchst COUNT(DISTINCT ...)
Dachte ich auch, aber...
> Aber nat锟絩lich ist dein Schema weit davon entfernt, normalisiert zu
> sein. F锟絩 gew锟絟nlich hat man als Entities wenigstens Interpret, Album
> und Titel. Dann erledigt sich das Problem von ganz allein, weil jeder
> Tontr锟絞er eine einzelne Zeile in der entsprechenden Tabelle ist.
Das scheint dann doch der Kasus Knacktus zu sein.
Meine bisherige Tabelle sah so aus:
+---------------+-----------+------+-----+-------------------+---------
| Field | Type | Null | Key | Default | Extra
+---------------+-----------+------+-----+-------------------+---------
| Nr | int(11) | NO | PRI | NULL | auto_inc
| Traegerart | char(1) | NO | MUL | |
| Traegernummer | int(4) | NO | | 0 |
| Titelnummer | int(2) | NO | | 0 |
| Titel | char(40) | NO | | |
| Interpret | char(30) | YES | | |
| Traegername | char(30) | YES | | |
| Stil | char(10) | YES | | |
| Minuten | int(2) | YES | | 0 |
| Sekunden | int(2) | YES | | 0 |
| Beteiligte | char(30) | YES | | |
| Bemerkungen | char(30) | YES | | |
| Aenderung | timestamp | NO | | CURRENT_TIMESTAMP | on updat
| Benutzer | char(8) | YES | | |
| Standort | char(1) | YES | | NULL |
+---------------+-----------+------+-----+-------------------+---------
(Zeilen bei 72 wegen der Anzeigbarkeit abgeschnitten)
Ich hatte einfach eine Tabelle, in der alle _Titel_ enthalten waren.
Diese wollte ich zwecks 锟絙ersichtsliste sozusagen komprimieren, damit
ich eine Zeile pro Tontr锟絞er bekomme. Das hat mit GROUP BY ja auch
funktioniert. Dann wollte ich 锟絙er COUNT DISTINCT eine zus锟絫zliche
Spalte einf锟絟ren, 锟絙er die ich feststellen kann, ob alle Titel dieses
Tontr锟絞ers im Feld "Interpret" den selben Eintrag haben. Wenn ja,
sollte in dieser Spalte dann ein "A" f锟絩 Album, sonst ein "S" f锟絩
Sampler stehen. Die von COUNT DISTINCT ermittelte Zahl stimmte aber nur
manchmal mit der Wirklichkeit 锟絙erein. Beispielsweise hatte ein
Tontr锟絞er 16 mal den selben Interpreten drin, COUNT DISTINCT gab aber
trotzdem 3 zur锟絚k.
Zugegeben, ich hatte mich im OP streckenweise etwas wirr ausgedr锟絚kt.
Ist es jetzt etwas klarer?
Mit dem Ziel einer Normalisierung habe ich die Tabelle jetzt in zwei
aufgeteilt. Eine f锟絩 den Tontr锟絞er als solchen, eine f锟絩 die einzelnen
Titel. Bis jetzt siehts so aus, als ob ich so alle Auswertungen, die
ich haben will, hinbekomme. Es gibt also jetzt eine ...
... Tabelle "Traeger", die sieht so aus:
+-------------+-----------------------+------+-----+-------------------
| Field | Type | Null | Key | Default
+-------------+-----------------------+------+-----+-------------------
| Art | enum('C','L','M','S') | NO | PRI | C
| Nr | int(4) | NO | PRI | 0
| Name | char(40) | NO | | NULL
| Interpret | char(30) | NO | | NULL
| Stil | char(10) | NO | |
| Standort | enum('S','V','W') | NO | | NULL
| Bemerkungen | char(30) | YES | |
| Aenderung | timestamp | NO | | CURRENT_TIMESTAMP
| Benutzer | char(8) | NO | |
+-------------+-----------------------+------+-----+-------------------
(Zeilen bei 72 wegen der Anzeigbarkeit abgeschnitten)
... und eine Tabelle "Titel", sie sieht so aus:
+-------------+-----------------------+------+-----+-------------------
| Field | Type | Null | Key | Default
+-------------+-----------------------+------+-----+-------------------
| Art | enum('C','L','M','S') | NO | PRI | C
| Nr | int(4) | NO | PRI | 0
| Titelnummer | int(2) | NO | PRI | 0
| Titel | char(40) | NO | |
| Interpret | char(30) | NO | |
| Minuten | int(2) | NO | | 0
| Sekunden | int(2) | NO | | 0
| Beteiligte | char(30) | YES | |
| Bemerkungen | char(30) | YES | |
| Aenderung | timestamp | NO | | CURRENT_TIMESTAMP
| Benutzer | char(8) | NO | |
+-------------+-----------------------+------+-----+-------------------
(Zeilen bei 72 wegen der Anzeigbarkeit abgeschnitten)
Ich wei锟� ich hab nicht IT studiert, nur E-Technik :-) Sieht das so
jetzt Eurer Meinung nach brauchbarer aus?
vG
Volker