Zwei Counts in einerm query

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zwei Counts in einerm query

    Ich habe zwei Tabellen, die eine enthält 13 nest Einträge (tab:nest),
    die andere enthält 0 id Einträge(tab: links).
    Die Tabelle Links kann aber Einträge enthalten, welche entweder frei=1 oder frei=0 sind.
    Mir geht es darum, mit einem Query alle nests und alle ids wo frei=1 ist zu counten.
    Meine beiden Versuche
    Code:
    SELECT COUNT(n1.`nest`), count( l.`id`) 
    FROM `hs_dir_nest` n1, hs_dir_links l 
    WHERE l.frei='1'
    und
    Code:
    SELECT COUNT(n1.`nest`), count(l.`id`) FROM `hs_dir_nest` n1 LEFT JOIN hs_dir_links l ON l.id WHERE l.frei='1'
    Ergeben bei beiden 0, weil ja die WHERE Bedingung nirgens erfüllt ist.
    Allerdings weiß ich nicht, wie ich sonst die beiden Abfragen in ein Query unterbringen kann.
    Ohne die Where Bedingung gibt es aber auch immer nur 0 als Ergebnis, sowohl bei Left Join, als auch beim normalen Join, weil ja links im Moment keine Einträge enthält, schön wäre es aber, wenn nest count 13 ergeben würde.
    SQL Injection kitteh is...

  • #2
    Zwei COUNTs in einer Query:

    SELECT (SELECT COUNT(x) ...) AS c1, (SELECT COUNT(y) ...) AS c2


    Falls es auch anders geht, würde ich gern belehrt werden.

    Kommentar


    • #3
      Code:
      SELECT (
      
      SELECT COUNT( nest )
      FROM hs_dir_nest
      ) AS n, (
      
      SELECT COUNT( id )
      FROM hs_dir_links
      ) AS l
      #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT COUNT(nest) FROM hs_dir_nest) AS n, (SELECT COUNT(id) FR

      Ich sehe visuell kein Fehler, oder 4.0.2 macht Probleme
      SQL Injection kitteh is...

      Kommentar


      • #4
        Siehe die ersten drei Absätze auf http://dev.mysql.com/doc/mysql/en/subqueries.html .

        Kommentar


        • #5
          Da komm ich ja her, ich weiß ja, dass ich alle Subqueries für 4.0.2 umschreiben muss, der Verweis dort auf Left Join hat ja hier auch nicht geholfen, mit Distinct auch nicht, weil nest und id, also die die gecounted werden unique sind.
          Bei den Joins scheitert es ja eben an dem ON und an der where Bedingung
          SQL Injection kitteh is...

          Kommentar


          • #6
            Durch JOIN bekommst du aber eine Ergebnistabelle, wenn du darauf COUNT anwendest, ist das Ergebnis die Multiplikation dessen was du eigentlich haben willst.

            Soweit ich weiß kann man das nicht einfach so mit JOIN nachbilden.

            Kommentar


            • #7
              Ob es eine oder zwei Tabellen sind ist ja wurscht, eine wäre besser, aber hier bedingt sich der 0 Wert von links das ergebnis, weil ja gleichzeitig nach frei geguckt wird.

              Fazit, zwei Queries
              SQL Injection kitteh is...

              Kommentar


              • #8
                ich muss sagen, ich verstehe dein problem nicht ganz.
                könntest du deine frage nochmal genauer stellen.

                insbesondere ein wenig detaillierter auf die tabellenstruktur eingehen.

                danke

                Kommentar


                • #9
                  Die Struktur ist testweise nur so, eine Tabelle die nest heißt, diese hat eine Spalte mit dem Namen nest, hat 13 Einträge und eine Tabelle mit dem Namen Links, dort gibts eine Spalte id und eine spalte frei, es gibt Einträge vom Typ id = beliebig und frei 0 oder 1, im Moment gibt es keine Einträge in Links.
                  Nun will ich ein Query, was mir einmal die Einträge in Nest zählt und die Einträge in ID, welche frei = 1 sind
                  SQL Injection kitteh is...

                  Kommentar


                  • #10
                    @Marskuh: So wie die zwei Subqueries oben. Jede für sich funkioniert und liefert auch genau was gewünscht ist. Nun sollen beide in einer Query vereint werden. Einzeln liefern sie (13) und (0), vereint soll (13,0) geliefert werden.
                    Hut ab, wenn du die Nuß knackst. Ich hab gottseidank ein MySQL, das Subqueries versteht, aber es interessiert mich trotzdem.

                    Kommentar

                    Lädt...
                    X