JOIN - Problem

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

  • JOIN - Problem

    Moin Leute,

    also leider ist mir kein pregnanterer Titel eingefallen, da das doch etwas komplizierter zu sein scheint, als ich dachte.

    Also, im Prinzip geht es darum, dass ich 2 Tabellen habe. Eine namens "fach" mit dem Feld "fachName" und eine namens "entries" mit dem Feld "entryFach".

    Nun möchte ich mit einem Query alle Datensätze aus "fach" haben, für die es in "entries" mindestens einen Datensatz gibt, in dem entryFach == fachName ist, und gleichzeitig auch die Datensätze in "entries" zählen, für die das gilt.

    Das ganze habe ich so probiert ( Zend_Db ):

    PHP-Code:
    $query $db->select()->from(array('f' => 'faecher'),
                                       array(
    'fachName')
                                       )
                                ->
    join(
                                        array(
    'e' => 'entries'),
                                        
    'f.fachName = e.entryFach',
                                        array(
    'entryCount' => 'COUNT(*)')
                                        
                                       );
          
    $allFaecher $db->fetchAll($query); 
    Das generiert folgendes Query:

    SELECT
    f.fachName, e.COUNT(*) as entryCount
    FROM
    fach AS f
    JOIN
    entries AS e
    ON
    f.fachName = e.entryFach
    Ich bekomme dann aber nur das letzte Fach aus der Liste, mit der Anzahl der Gesamteinträge.

    Ich geb nochmal ein kleines Beispiel, wie ich das genau meine, dann wirds vermutlich etwas verständlicher:

    in fach gibt es 3 Fächer:

    Deutsch
    Mathe
    English

    in entries gibts 2 Einträge:

    1.) mit Fach Deutsch
    2.) mit Fach Mathe


    Mit meinem Query erhalte ich nur einen Datensatz:

    Mathe ( 2 )

    Es sollte aber sein:

    Deutsch ( 1 )
    Mathe ( 1)


    Wäre nett, wenn mir da jemand auf die Sprünge helfen könnte. Danke.

    Gruß,
    Aza
    Mein aktuelles Projekt: Hausaufgaben Datenbank für kostenlose Hausaufgaben

  • #2
    SELECT f.entryFach, COUNT(e.fachName) as count FROM fach f INNER JOIN entries e ON f.entryFach = e.fachName GROUP BY f.entryFach;

    GROUP BY bei COUNT(!)

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Ah, also im Grunde fehlte nur das GROUP BY.
      Ich weiß zwar nicht so ganz, was du mit dem 2. GROUP BY COUNT meintest, aber ich danke dir vielmals, es funktioniert nun so:

      PHP-Code:
      $stmt $db->query(
                               
      'SELECT
                                  f.fachName, 
                                  COUNT(e.entryFach) AS entryCount
                                FROM
                                  faecher f
                                INNER JOIN
                                  entries e
                                ON
                                  f.fachName = e.entryFach
                                GROUP BY
                                  f.fachName'
                                  
                               
      );
            
      $allFaecher $stmt->fetchAll(); 
      Mein aktuelles Projekt: Hausaufgaben Datenbank für kostenlose Hausaufgaben

      Kommentar


      • #4
        Das war einfach nur eine Aussage.
        COUNT nur mit GROUP BY ansonsten funkt das nich.

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Aaah, ich hatte das "bei" dazwischen überlesen.

          Danke dir!
          Mein aktuelles Projekt: Hausaufgaben Datenbank für kostenlose Hausaufgaben

          Kommentar

          Lädt...
          X