problem mit count - ich kriegs einfach nicht hin

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

  • problem mit count - ich kriegs einfach nicht hin

    hi,

    also ich bin mal wieder am verzweifeln. Und zwar hab ich eine Tabelle in welcher Jobangebote gespeichert werden sowie eine andere Tabelle in der die zu den Jobs ein gehenden Bewerbungen gespeichert werden.

    Ich möchte nun auf einer Seite alle Jobs zeigen welcher in der DB sind und die Anzahl der zu diesen einzelnen Jobs eingegangenen Bewerbungen. Bis hier hin ist das auch kein Problem. Ich möchte nun aber noch anzeigen, wenn neue (noch ungesehene Bewerbungen) unter den Bewerbungen des jeweiligen Jobs dabei sind. Dazu hab ich in der Bewerbungen - Tabelle eine Spalte (gesehen), welche bei jeder gesichteten Bewerbung den Wert 1 und bei ungesichteten Bewerbungen den Wert 0 hat.

    Die normale Anzeige aller Jobs mit den dazu eingegangenen Bewerbungen funktioniert mit folgender Abfrage:

    $sql="SELECT j.job_id, j.titel_intern, j.referenznr_intern, j.bew_formular, j.status, b.bew_id, b.gesehen,
    COUNT(b.bew_id) AS anzahl
    FROM jobs j, jobs_bewerbungen b
    WHERE j.unt_user_id=$unt_session[unt_user_id] AND b.job_id = j.job_id
    GROUP BY j.job_id";

    Wie mach ich dem Computer am besten klar, dass eine Markierung mach soll, wenn bei allen für den speziellen Job eingegangenen Bewerbungen eine dabei ist wo die Spalte b.gesehen den Wert 0 hat????


    Gruss und wie immer Vielen Dank

    Thommy
    www.unister.de

    what students want!

  • #2
    einfach ne if() schleife ...

    Code:
    while($row = mysql_fetch_array($sql)) {
     if($row[b.geshen] == 0) {
      echo "<font color=\"FF0099\">"; 
                            } else {
      echo "<font color=\"000000\">; 
                                   }
                                          }
    ... oder hab ich dich jetzt nicht verstanden?
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      hi schmalle

      ja, aber das Problem ist das ich alle gefundenen Datensätze per group by (GROUP BY j.job_id) gruppieren muss. Und innerhalb dieser Gruppe können sich sowohl Bewerbungen mit "gesehen" = 1 bzw 0 befinden.

      Und dann funzt das mit "if($result['gesehen'] != '0')" glaube nicht mehr.

      oder hab ich hier irgendeinen Denkfehler???

      Gruss

      thommy
      www.unister.de

      what students want!

      Kommentar


      • #4
        warum sollte das nicht gehen? probiers doch ersteinmal ...
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #5
          nee funzt leider nicht

          wenn beispeilsweise 8 Bewerbungen auf einen Job eingegangen sind, dann hat er ja normalerweise 8 * $job[gesehen], welche irgendwie gruppiert werden (weil gruppiert wird ja nach j.job_id (muss auch so sein wegen der Ausgabe, der Jobs)). Aber welchen der 8 * $job[gesehen] er in den gruppierten Datensatz nimmt weiss ich nicht.

          Naja und afgrund dessen funzt der Rest halt nicht
          www.unister.de

          what students want!

          Kommentar


          • #6
            mach mal group by jobID, gesehen
            dann haste auch ein Unterschied zwischen gesehen und nicht gesehen
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              stimmt das könnt klappen!

              hab aber noch ein Problem: und zwar wenn zu einem Job noch keine Bewerbung eingegangen ist, dann ziegt er bei meiner Abfrage ja diesen Job überhaupt nicht an, weil ja die Bedingung

              b.job_id = j.job_id

              nicht erfüllt ist.

              Kann ich dem das irgendwie in sql klar machen, dass er den Datensatz der job-Tab trotzdem lesen soll??


              Danke euch
              www.unister.de

              what students want!

              Kommentar


              • #8
                jo mit left join im select statement
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Hey Danke für die Hilfe !!!!!!!!
                  www.unister.de

                  what students want!

                  Kommentar


                  • #10
                    Also doch noch n kleines Problemchen.

                    Das mit dem groupby j.job_id, b.gesehen ist ne super id - ich weiss bloss nicht rich wie ichs für die Ausgabe aufbereiten muss.

                    Also ich geb alle DS (sprich alle Jobs) mit ner foreach Schleife aus:

                    $sql="SELECT j.job_id, j.titel_intern, j.referenznr_intern, j.bew_formular, j.status, b.bew_id, b.gesehen,
                    COUNT(b.bew_id) AS anzahl
                    FROM jobs j
                    LEFT JOIN jobs_bewerbungen b ON b.job_id = j.job_id
                    WHERE j.ordner_id=$ordner_id AND j.status != 3
                    GROUP BY j.job_id, b.gesehen";

                    $result=mysql_query($sql);
                    $ret = array();
                    while ($job=mysql_fetch_array($result))
                    array_push( $ret, $job );

                    ungefähr so

                    foreach ( $ret as $job )
                    {
                    print "$job[titel_intern]";
                    print "$job[anzahl]";
                    etc
                    }

                    nun würde er ja alle jobs, welche Bewerbungen haben die gesehen und auch Bewerbungen haben welche nicht gesehen wurden - 2 mal ausgeben.

                    wenn ich ne if Bedingung davorhänge

                    foreach ( $ret as $job )
                    {
                    if ($job[gesehen]=="1")
                    {
                    print "$job[titel_intern]";
                    print "$job[anzahl]";
                    etc..
                    }
                    }

                    tut er das zwar nicht, er zeigt mir aber ne falsche Anzahl an Bewerbungen welche gesamt (gesehen/ungesehen)eingegangen sind.

                    Naja und eigentlich möchte ich ja für jeden Job anzeigen lassen (ob neue Bewerbungen dabei sind bzw wieviel gesamt/ wieviel neue)

                    Hat eine ne Idee wie ich die beiden arrays verknüpfen könnte ??

                    Gruss und Danke!!

                    Thommy

                    www.unister.de

                    what students want!

                    Kommentar

                    Lädt...
                    X