Manfred: /MySQL Nur bestimmte Datensätze zählen

Hallo zusammen,

ist es möglich, bei MySQL alle Datensätze auszulesen, aber nur bestimmte zu zählen?

Nicht funktionierendes Beispiel:

SELECT A*, (COUNT(B.ID) AS anzahl WHERE B.show='1')  
FROM tabelle 1 AS A, tabelle2 AS B  
WHERE A.ID=B.a_id

Ich würde mich sehr über Hilfe freuen.

  1. Nicht funktionierendes Beispiel:

    SELECT A*, (COUNT(B.ID) AS anzahl WHERE B.show='1')

    FROM tabelle 1 AS A, tabelle2 AS B
    WHERE A.ID=B.a_id

      
    Es gibt Sub-Selects (abhängig von deiner MySQL-Version):  
    ~~~sql
    SELECT A*, (SELECT COUNT(B.ID) WHERE B.show='1') AS Anzahl  
    FROM tabelle 1 AS A, tabelle2 AS B  
    WHERE A.ID=B.a_id
    

    Abgesehen davon hast du ein paar Unschönheiten in deiner Query:

    • Nie den Stern-Selektor verwenden
    • A* müsste A.* heißen
    • was bezweckst du mit dem join? du holst gar keine daten von tabelle2...
    • ich würde immer explizit ((LEFT|RIGHT) OUTER | INNER) JOIN schreiben, statt diese verwurstung im where, macht das lesen einfacher.
    • Die Kombination von zwei Problemstellungen macht IMHO auch nicht so viel Sinn, immerhin hast du jetzt die Anzahl bei jedem zurück gelieferten Datensatz, auch wenn die mal gar nichts mit dem Datensatz an sich zu tun hat.
    --
    for your security, this text has been encrypted by ROT13 twice.
    1. Danke, scheinbar habe ich leider die falsche Version.
      Die Query war einfach so schnell zusammengeschrieben um ungefähr zu verdeutlichen was ich bezwecken will.

  2. moin,

    Ich würde mich sehr über Hilfe freuen.

    welche version benutzt du den und was genau willst du als ausgabe haben ? bitte kein SELECT aufführen, das bringt wenig, sondern mit beispieldaten und worten sagen, was genau du haben willst.

    Ilja