Abfrage auf ein Feld
Moderator: Moderatoren
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2932
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Abfrage auf ein Feld
Hallo SQL-Spezis,
da ich mich bisher (noch) nicht allzuviel mit der SQL-Syntax beschäftigt habe, hier mal eine Frage an die Spezis:
Ich möchte auf einer MySQL-Tabelle abfragen, wieviel verschiedene Nummern in dem Feld ID vorkommen.
Kann mir da jemand die Syntax verraten ?
da ich mich bisher (noch) nicht allzuviel mit der SQL-Syntax beschäftigt habe, hier mal eine Frage an die Spezis:
Ich möchte auf einer MySQL-Tabelle abfragen, wieviel verschiedene Nummern in dem Feld ID vorkommen.
Kann mir da jemand die Syntax verraten ?
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Code: Alles auswählen
SELECT Count(*)
FROM
(
SELECT Id FROM TableName
GROUP BY Id
) TableIds
Das äußere SELECT zählt die Zeilen der Teilmenge.
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
-
- Rekursionen-Architekt
- Beiträge: 164
- Registriert: Mo, 09. Jan 2006 17:06
- Wohnort: Paderborn
- Hat sich bedankt: 2 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Hallo Wolfgang,
ich kenne nur den ADS SQL-Dialekt. Da würden die Abfrage lauten:
Ich denke, das wird bei MYSQL auch nicht viel anders sein.
Freundliche Grüße
Hans
ich kenne nur den ADS SQL-Dialekt. Da würden die Abfrage lauten:
Code: Alles auswählen
SELECT COUNT (DISTINCT id) FROM tablename
Freundliche Grüße
Hans
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Top Lösung, Hans!
Ich glaube, einfacher geht es nicht mehr
Uli
Ich glaube, einfacher geht es nicht mehr
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Mitglied XuG Cologne
Mitglied XuG Osnabrück
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2932
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Vielen Dank, unter MySQL klappt es mit
Kann man das noch erweitern um die Häufigkeit des Vorkommens ?
Code: Alles auswählen
SELECT DISTINCT <feld> FROM <tabelle>
Viele Grüße
Wolfgang
Wolfgang
- nightcrawler
- 1000 working lines a day
- Beiträge: 650
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 96 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Das bringt aber ein anderes Ergebnis...hier erscheint jeder eindeutige Wert genau einmal in der Ergebnismenge. Bsp population Tabelle:Wolfgang Ciriack hat geschrieben:Kann man das noch erweitern um die Häufigkeit des Vorkommens ?Code: Alles auswählen
SELECT DISTINCT <feld> FROM <tabelle>
Code: Alles auswählen
select count(distinct cities) from population
Code: Alles auswählen
select distinct cities from population
Code: Alles auswählen
select cities, count(*) from population group by cities
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2932
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Hallo Joachim,
liefert mir genau das, was ich suchte.
Vielen Dank
Code: Alles auswählen
select cities, count(*) from population group by cities
Vielen Dank
Viele Grüße
Wolfgang
Wolfgang
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2823
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 95 Mal
- Danksagung erhalten: 13 Mal
Re: Abfrage auf ein Feld
Hallo, Wolfgang -
Vorschlag zur Güte:
Ohne die ORDER Clause liefert SQL die Daten, wie sie in der Tabelle liegen, und bildet jedesmal eine Summe, wenn cities sich ändert. Durch das ORDER BY sorgst Du dafür, dass die Daten in der gewünschten Reihenfolge kommen. Vorsicht: abhängig vom SQL-Dialekt kann es vorkommen, dass der Server die Sortierung, die für PRIMARY KEY angelegt wird, bei solchen Abfragen verwendet.
Wenn die Tabelle also so definiert wurde:
sind die Chancen z.B. bei MySQL gut, dass das Ergebnis nach PRIMARY KEY gelesen wird und damit Deinen Vorstellungen entspricht. Lässt Du das Ganze auf einem anderen SQL-Server laufen, kann das Ergebnis ohne ORDER BY komplett anders aussehen.
Vorschlag zur Güte:
Code: Alles auswählen
SELECT cities, count(*) FROM population GROUP BY cities ORDER BY cities
Wenn die Tabelle also so definiert wurde:
Code: Alles auswählen
CREATE TABLE population (cities char(64), zipcode char(8), population bigint, PRIMARY KEY cities)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Wolfgang Ciriack
- Der Entwickler von "Deep Thought"
- Beiträge: 2932
- Registriert: Sa, 24. Sep 2005 9:37
- Wohnort: Berlin
- Hat sich bedankt: 13 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Abfrage auf ein Feld
Hallo Georg,
vielen Dank für deine ausführlichen Anmerkungen.
Das mit der Anzahl war eigentlich nur ein Zusatz, den ich nicht unbedingt benötige.
Mir ging es nur darum festzustellen, auf wie vielen verschiedenen Smartphones meine App installiert wurde und, da einige IDs nur zu Testzwecken benutzt wurden, und wie viele Auftragsdaten von diesen gesendet wurden.
Da habe ich mit der o.g. Abfrage genau das bekommen, ich konnte daraus sehen, das 3 IDs nur <10 Aufträge versand haben und daher als Test anzusehen sind.
vielen Dank für deine ausführlichen Anmerkungen.
Das mit der Anzahl war eigentlich nur ein Zusatz, den ich nicht unbedingt benötige.
Mir ging es nur darum festzustellen, auf wie vielen verschiedenen Smartphones meine App installiert wurde und, da einige IDs nur zu Testzwecken benutzt wurden, und wie viele Auftragsdaten von diesen gesendet wurden.
Da habe ich mit der o.g. Abfrage genau das bekommen, ich konnte daraus sehen, das 3 IDs nur <10 Aufträge versand haben und daher als Test anzusehen sind.
Viele Grüße
Wolfgang
Wolfgang