Ergebnis 1 bis 6 von 6

Thema: Zeilen zählen

  1. #1
    Interessierte/r
    Registriert seit
    03.02.2010
    Ort
    Wanne-Eickel
    Alter
    48
    Beiträge
    125
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard Zeilen zählen

    Ich habe eine Datenbank mit Daten von Hunden. Jetzt möchte ich ermitteln wieviele Würfe in einem Jahr gefallen sind.
    Code:
    SELECT 
        dog.dogname, dog.breeder_id, dog.mother_id, dog.date_of_birth, YEAR(dog.date_of_birth) AS year, owner.kennelname,
        COUNT(dog.dogname) anzahl
    FROM 
        dog
    
    LEFT JOIN owner  ON
    (dog.breeder_id = owner.id)
    
    WHERE owner.country_short='de' 
    AND     YEAR(dog.date_of_birth)>1996
    AND owner.kennel_note =''
    GROUP BY 
        dog.mother_id, dog.date_of_birth
    ORDER BY 
        date_of_birth ASC
    das gibt mir das year, den kennelname und die Anzahl der Babys (anzahl):
    Code:
    2004 - Zwinger A - 8 Welpen
    2004 - Zwinger B - 2 Welpen
    2004 - Zwinger C - 5 Welpen
    2004 - Zwinger A - 3 Welpen
    Gruppiere ich nach year, erhalte ich die Anzahl aller Babys in einem Jahr.
    Code:
    2004 -  18 Welpen
    Soweit gut... - jetzt möchte ich die Anzahl der Würfe pro Jahr haben.
    Es kann aber sein, das zwei Würfe a.) am gleichen Tag geboren sind b.)die gleiche Mutter haben oder c.)beim gleichen Züchter geboren sind. Somit scheidet die COUNT DISCTINCT Variante aus....
    Ergebnis soll sein
    Code:
    2004 -  4 Würfe
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Meister(in) Avatar von lukasn
    Registriert seit
    23.02.2008
    Ort
    Schweiz
    Alter
    27
    Beiträge
    491
    Danke
    2
    Bekam 12 mal "Danke" in 11 Postings

    Standard AW: Zeilen zählen

    Ohne Kenntnis der Datenbankstruktur ist es etwas schwierig, eine gute Antwort zu liefern.

    Wie genau identifizierst du einen einzelnen Wurf? Verstehe ich richtig, dass dir das oben genannte Statement ein Resultat für jeden Wurf liefert?

    Wenn ja, wäre es wohl am einfachsten, ein VIEW aus diesem SELECT-Statement zu erstellen und dann ein einfaches COUNT auf dieses View anzuwenden, um die anzahl Würfe zu erhalten. Die erstellung des VIEWS empfiehlt sich vor allem, wenn du auch sonst noch mit Würfen arbeiten willst.

    Folgender Code könnte in etwa dem entsprechen was du willst (In der Annahme, dass dein erstes Statement sauber nach Würfen trennt):
    Code:
    CREATE VIEW litter AS
    SELECT 
        dog.dogname, dog.breeder_id, dog.mother_id, dog.date_of_birth, 
        YEAR(dog.date_of_birth) AS year, owner.kennelname, owner.country_short, 
        owner.kennel_note, COUNT(dog.dogname) AS anzahl
    FROM 
        dog
    LEFT JOIN owner  ON
    (dog.breeder_id = owner.id)
    GROUP BY 
        dog.mother_id, dog.date_of_birth
    ORDER BY 
        date_of_birth ASC;
        
    SELECT year, COUNT(*) FROM litter
        WHERE country_short='de' 
        AND year>1996
        AND kennel_note =''
    GROUP BY year;
    Code ist logischerweise ungetestet

  3. #3
    Interessierte/r
    Themenstarter

    Registriert seit
    03.02.2010
    Ort
    Wanne-Eickel
    Alter
    48
    Beiträge
    125
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Zeilen zählen

    das Beispiel bekomme ich trotz meiner Kreativität nicht ans laufen, aktuell Fehlermeldung:mysql_query() expects at most 2 parameters, 3 given.

    Hier kann man im ersten Teil sehen, das jeder Wurf in jedem Jahr gezeigt wird (und z.B. in 2008 waren es 12 Würfe). Der Rest ist Test

    Wurf wird idendifiziert mit date_of_birth_ mother_id, breeder_id
    Diese Abfrage benötige ich nur dieses eine mal für die Statistik

    Sorry, mein Internet ist heute etwas lahm und tot...




    Ufta, hat mich das Teil googeln gekostet, habe es mit allem möglichem versucht, aber nix wollte so wie ich. Über alle Möglichkeiten, das Array zu gruppieren, sortieren, zählen über etliche Funktionen...
    Aber geschafft:
    Code:
    SELECT *, COUNT(*) FROM
    (
    SELECT 
        YEAR(dog.date_of_birth) AS year
        
    FROM 
        dog
    
    LEFT JOIN owner  ON
    (dog.breeder_id = owner.id)
    
    WHERE owner.country_short='de' 
    AND dog.date_of_birth >= DATE_SUB(CURDATE(), INTERVAL 20 YEAR)
    AND owner.kennel_note =''
    GROUP BY 
        dog.mother_id, dog.date_of_birth, year 
    ) AS T1
    GROUP BY year
    Geändert von TanjaP. (19.04.2013 um 14:45 Uhr) Grund: Lösung

  4. #4
    Meister(in) Avatar von lukasn
    Registriert seit
    23.02.2008
    Ort
    Schweiz
    Alter
    27
    Beiträge
    491
    Danke
    2
    Bekam 12 mal "Danke" in 11 Postings

    Standard AW: Zeilen zählen

    Jop, diese Abfrage macht eigentlich das selbe wie meine, einfach mit einem Subselect anstatt einem View. Ich denke du hast versucht, mein Codebeispiel oben direkt zu verwenden? Ich hatte es nicht klar gekennzeichnet, aber das waren eigentlich zwei separate statements, das erste wird nur einmal verwendet um das View zu erstellen. Dieses View kann dann verwendet werden wie eine normale Tabelle.

  5. #5
    Interessierte/r
    Themenstarter

    Registriert seit
    03.02.2010
    Ort
    Wanne-Eickel
    Alter
    48
    Beiträge
    125
    Danke
    1
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Zeilen zählen

    ich sagte doch, ich war kreativ
    Aber mit zwei queries wollte das auch nicht.

  6. #6
    Meister(in) Avatar von lukasn
    Registriert seit
    23.02.2008
    Ort
    Schweiz
    Alter
    27
    Beiträge
    491
    Danke
    2
    Bekam 12 mal "Danke" in 11 Postings

    Standard AW: Zeilen zählen

    Ich bin nicht sicher, ob du das Konzept des Views wirklich verstanden hast. Das erste Statement (CREATE VIEW [...]) muss nur ein mal ausgeführt werden, wie z.B. CREATE TABLE. Danach ist das View wie eine normale Tabelle verfügbar.

    Ein View ist eigentlich eine art "Virtuelle Tabelle", welche es dir ermöglicht, ein komplexes SELECT-Statement abzuspeichern und bei späteren Ausführungen wieder zu verwenden, ohne komplexe Subselects o.ä. zu schreiben.

    Nachdem du einmal das View erstellt hast, reicht das folgende Statement, um die Anzahl würfe pro Jahr zu erhalten. Die Where-Angaben hab ich von dir übernommen und sind optional. Relevant ist eigentlich nur das SELECT COUNT(*) und das GROUP BY `year`.

    Code:
    SELECT year, COUNT(*) FROM litter
        WHERE country_short='de' 
        AND year>1996
        AND kennel_note =''
    GROUP BY year;

Ähnliche Themen

  1. Seltsame Zeilen auf HP
    Von lowbas im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 24.04.2012, 00:09
  2. 3 Zeilen mit Background
    Von FlinkerWiesel im Forum HTML & CSS Forum
    Antworten: 8
    Letzter Beitrag: 01.12.2011, 02:33
  3. IE verschiebt Zeilen.
    Von Prinzchen1990 im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 11.12.2009, 14:39
  4. Zeilen zählen in Mysql
    Von Walerik im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 29.10.2009, 01:01
  5. Zeilen angabe!
    Von im Forum HTML & CSS Forum
    Antworten: 11
    Letzter Beitrag: 13.10.2005, 19:16

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •