none
Maximalwert eines Parameters einer Unterabfrage ermitteln RRS feed

  • Frage

  • Hallo,

    es gibt Zeitschriften (journals) und Abonnements (subscriptions).
    Gesucht ist die Anzahl der Abonnements der Zeitung mit den meisten Abonnements.

    Eine Liste aller Zeitungen mit der jeweiligen Anzahl der Abonnements erhalte ich so:

    SELECT idx,
     (SELECT COUNT(idx) FROM lbr_subscription
      WHERE (journal=j.idx)) AS subscriptions
    FROM lbr_journal j

    Wie muss man diese Abfrage in eine übergeordnete Abfrage einbetten, um MAX(subscriptions) zu erhalten?

    Danke
    Magnus

    Donnerstag, 17. August 2017 08:01

Antworten

Alle Antworten

  • Mach einfach einen neuen Subselect und ersetze Count(idx) durch max(subscription).
    Oder ich verstehe deine Frage nicht...
    Donnerstag, 17. August 2017 08:20
  • Hallo Magnus,
    Schau mal ob Du hiermit weiterkommst:
    SELECT idx,j.Name , subscriptions.Anzahl
    FROM lbr_journal j
    inner join 
     (
    	SELECT top 1
    	idx, COUNT(*) as Anzahl
        FROM lbr_subscription  
    	group by idx
    	order by  count(*) desc
    	) AS subscriptions
    	on subscriptions.idx=j.idx

    Grüße Alexander
    Donnerstag, 17. August 2017 08:28
  • Hallo Alexander,

    danke, das passt! Ich konnte Deine Abfrage so weit reduzieren:

    SELECT cnt
    FROM 
    (
    	SELECT TOP 1 journal,COUNT(idx) as cnt FROM lbr_subscription GROUP BY journal ORDER BY count(idx) DESC
    ) AS subscriptions
    

    Das funktioniert nun, ich brauche nur die Anzahl.

    Frage: Warum kann man das "AS subscriptions" am Ende nicht weg lassen?

    Danke

    Magnus

    Donnerstag, 17. August 2017 08:58
  • Weil jede Tabelle, also auch dynamische, einen Namen brauchen.
    Du kannst ja auch ") as Hugo" nennen, die Felder lassen sich dann per Hugo.journal, Hugo.cnt ansprechen.
    Ohne AS könntest du ggf. bei Mehrfachvorkommen der Namen, diese nicht differenzieren.
    Donnerstag, 17. August 2017 10:49