SQL (hier Fülltext, weil SQL allein dem Forum zu kurz ist)
Karl-Heinz Osmer
- datenbank
Hallöle,
sitze immer noch an meinem Statistik- Problem von gestern.
SELECT distinct adr1.id, adr1.bezeichnung, count(*)
...
group BY adr1.bezeichnung, adr2.bezeichnung
Ich möchte wissen, wieviel BesucherFIRMEN (adr2.bezeichnung) Kontakt zu einem Aussteller (adr1.bezeichnung) wünschen.
Die Einzelsätze sind jedoch auf Mitarbeiterebene. Das heißt
eine BesucherFIRMA kann mehrere Mitarbeiter zur Messe senden, deshalb brauche ich distinct.
Nun möchte ich alle mit distinct verdichteten Zeilen pro Aussteller zählen, deshalb der count. Aber die Kombination aus distinct und count gibt unsinnige Ergebnisse.
Wie kann ich Zeilen zählen, die mit distinct erzeugt wurden?
LG Kalle
Hi,
auf die Gefahr hin auf ein Doppelposting zu antworten, das zu suchen ich aber jetzt zu faul bin, hier ein kurzer Hinweis:
Du willst gleiche Adressen zusammenfügen, ja? Aber trotzdem die ID haben? Warum gruppierst du dann die ID eigentlich nicht erstmal mit, sonst ist das vermutlich kein gültiges SQL auch, wenn die Datenbank dir das abnimmt.
SELECT addrid, COUNT(*)
FROM ...
WHERE...
GROUP BY addrid
sollte die Basisstruktur deiner Abfrage sein. Er führt also die Sätze gleicher ID zusammen und zählt dabei, welche Sätze zusammengefügt wurden.
MfG
Rouven
Hi,
SELECT addrid, COUNT(*)
FROM ...
WHERE...
GROUP BY addrid
Dann bekomme ich ZU VIELE Treffer, nämlich JEDEN Mitarbeiter. Wenn Meyer und Schulze von Firma A BEIDE mit Firma B Kontakt wünschen, bringt der count "2" statt "1".
Ich will aber Firma A nur einmal zählen.
Genau das ist das Problem, mein Auftraggeber braucht eine "bereinigte" Statistik.
Da war doch noch was mit HAVING hinter dem GROUP. Wer kennt sich damit aus?
LG Kalle
Hallöle,
ich glaube, ich habe mich nicht verständlich ausgedrückt. Habe eine Tabelle mit Kontaktwünschen zwischen Ausstellern und Besuchern einer Messe:
AusstellerFirma BesucherFirma BesucherMitarbeiter
--------------- ------------- -------------------
A X Schulz
A Y Meyer
A Y Michelsen
B X Schulz
B X Schreiber
B Z Klein
Ergebnis soll die Anzahl der BesucherFirmen sein, die eine AusstellerFirma kontaktieren möchte:
AusstellerFirma count(BesucherFirma)
--------------- --------------------
A 2
B 2
Meine Idee war, die Anzeige zunächst mit distinct auf die BesucherFirma zu verdichten:
AusstellerFirma BesucherFirma
--------------- -------------
A X
A Y
B X
B Z
und dann die Zeilen pro AusstellerFirma zu zählen. KLappt aber nicht, weiß nicht, wo ich den count() einbauen soll.
Habe schon mit HAVING count() rumgeprobt, aber keine vernünftige Dokumentation gefunden.
Wer weiß weiter?
LG Kalle
Hallo,
mit welcher Datenbank arbeitest du?
Manchmal bieten verschiedene SQL Dialekte einfache Möglichkeiten, die auf anderen Datenbanken nicht funktionieren.
Grüße
Marcus
Hallo,
mit welcher Datenbank arbeitest du?
MySQL
Hallöle,
manchmal reicht es schon aus, sein Problem klar zu definieren, um der Lösung näher zu kommen.
Beim Proben habe ich distinct mal in den count gesetzt:
SELECT adr1.id, adr1.bezeichnung Aussteller, count(distinct adr2.bezeichnung) Besucher
Das ist es.
LG Kalle