Announcement

Collapse
No announcement yet.

Geht das? (count()-Frage)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Geht das? (count()-Frage)

    Moin.

    Nehmen wir mal Folgendes (zur Vereinfachung) an:
    Code:
    Tabelle User mit Spalte id
    Tabelle Foto mit Spalte iduser (also User.id) (1:n)
    Tabelle Text mit Spalte id, iduser (also User.id) (1:n)
    Tabelle Sign mit Spalte idtext (also Text.id) (1:n)
    Jetzt will ich herausfinden, wieviele Fotos und wieviele Texte zu einem User gespeichert wurden und auch
    noch gleich, wie viele Signatures an den jeweiligen Texten dranhängen.
    Geht das in einem einzigen Statement?


    Code:
    SELECT u.id, f.iduser, t.iduser, s.idtext FROM user AS u
    LEFT JOIN foto AS f ON u.id = f.iduser
    LEFT JOIN text AS t ON u.id = t.iduser
    LEFT JOIN sign AS s ON t.id = s.idtext
    WHERE u.id = 1
    So könnte ich das was zurückgegeben wird natürlich programmtechnisch in einer Schleife verarbeiten und z.B. arrays füllen.
    Ist aber umständlich. Geht das eleganter mit count() und GROUP BY ?

    Irgendwie steh ich gerade auf dem Schlauch. Bin auf keine funktionierende Lösung gekommen.

  • #2
    [highlight="sql"]
    select
    u.id,
    (select count( id) from foto where iduser=u.id) as fotos,
    (select count( id) from text where iduser=u.id) as texte,
    (select count( id) from sign where iduser=u.id) as signaturen
    from
    User u;
    [/highlight]

    Comment


    • #3
      Das hat mich auf die richtige Spur gebracht.
      Danke!

      Comment

      Working...
      X