Abfrage bereitet probleme

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

  • Abfrage bereitet probleme

    hi...

    also ich habe eine tabelle mit Bezeichnungen für Wettkämpfe und in einer anderen die Kategorien für die Wettkämpfe. Ein wettkampf kann in mehreren kategorien vorhanden sein, weshalb ic hnoch ne verbindungstabelle gemacht habe.

    ich möchte nun in einer SELECT-anweisung das os hinbekommen, das ich eine tabellenspalte habe, wo die kategorien durch komma getrennt drinstehen.

    meine abfrage bisher:

    Code:
    SELECT l.name, DATE_FORMAT( l.datum, '%d.%m.%Y' ) 
    as datum_german, l.ort, l.zeit, l.strecke_kurz, l.strecke_lang, l.bemerkungen, k.kat_name
    FROM tbl_lauf l, tbl_kategorie k, tbl_lauf_kategorie lk
    WHERE lk.lauf_id = l.lauf_id 
    AND lk.kategorie_id = k.kategorie_id 
    AND SUBSTRING( datum, 1, 4 ) = '2004'
    ORDER BY datum ASC
    dadurch bekomm ich aber (logischerweise) doppelte datensätze, weil ja nur die kategorie anders ist.

    Meine frage nun, wie bekomm ich alle kategorien in eine spalte so das ich keine doppelten datensätze habe?

    EDIT:

    sorry, falsches forum...müsste nach SQL verschoben werden


  • #2
    das kannst du nicht mit reinem sql machen, da musst du schon php für bemühen

    stichwort: gruppenwechsel
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      wenn die Kat anders ist kann man doch nicht von doppel sprechen, oder
      verstehe ich was nicht

      BTW: was hat das mit PHP zu tun? -> Mod bitte schieb

      Kommentar


      • #4
        Original geschrieben von asp2php
        Mod bitte schieb
        nein, ich finde, er hat instinktiv aber unwissentlich richtig gepostet
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          na die kat is anders aber alles andere ja nicht, deshalb doppelt, wenn ein wettkampf in 2 kategorien eingeteilt ist.

          @mrhappiness: hab grad mal geschaut nach gruppenwechsel, kannst das aber mal kurz erklären? müsste ich da abfragen ob der wert schon mal da ist, falls es mehrere kategorien gibt?

          Kommentar


          • #6
            such mal im forum nach gruppenwechsel

            du solltest dazu eventuell nach wettkampf sortieren und dann erst nach datum
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              ja danke hab was gefunden, aber wenn ich nach datum sortiere, dann hab ich immer genau die gleichen datensätze untereinander und kann dann prüfen ob vorhergehender wert gleich oder ungleich ist

              Kommentar


              • #8
                wonach du sortierst is abhängig von dem was du ausgeben willst

                ich dachte, du willst in einer spalte den wettkampf habenund in der spalte nebendran alle kategorien, da wäre eine vorhergehende sortierung nach datum u. U. hinderlich
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  ja so wollte ich es auch haben. wieso ist sortierung nach datum hinderlich? ich wollte ja sowieso na datum geordnet ausgeben

                  Kommentar


                  • #10
                    wettkampf a in den kategorien 1, 2 und 3 (01.01.2004, 03.01.2004, 05.01.2004)
                    wettkampf b in den kategorien 2, 3 und 7 (02.01.2004, 04.01.2004, 06.01.2004)

                    in welcher reihenfolge soll jetzt was wie und wo ausgegeben werden?
                    Ich denke, also bin ich. - Einige sind trotzdem...

                    Kommentar


                    • #11
                      also die wettkämpfe sind immer am gleichen datum egal in welcher kategorie sie sind.

                      aber in dem zusammenhang hab ic hjetzt ein problem mit dem gruppenwechsel.

                      hier mal der code

                      PHP-Code:
                      while($row mysql_fetch_array($res)){
                            
                      $i == $row['bgcolor'] = '#C6C6C6' $row['bgcolor'] = '#F1F1F1'
                            if (
                      $row['name'] != $wert_vorher)
                            {
                              
                      $wettkaempfe[] = $row;
                            }
                            else 
                      $wettkaempfe[$i-1]['kat_name'] .= ", ".$row['kat_name'];
                            
                      $wert_vorher $row['name'];
                            
                            
                            
                      $i++; 
                        } 
                      ich bekomm immer bei dem nächsten index, der nach dem anhängen das wertes kommt das er undefined ist. es soll ja wen nder name gleich ist der wert der kategorie an den vorherigen angehängt werden.

                      Code:
                      [7] => Array
                              (
                                  [0] => Gohrischheidelauf
                                  [name] => Gohrischheidelauf
                                  [1] => 05.06.2004
                                  [datum_german] => 05.06.2004
                                  [2] => Zeithain Altes Lager
                                  [ort] => Zeithain Altes Lager
                                  [3] => 10:00
                                  [zeit] => 10:00
                                  [4] => 8100
                                  [strecke_kurz] => 8100
                                  [5] => 13500
                                  [strecke_lang] => 13500
                                  [6] => 7.
                                  [bemerkungen] => 7.
                                  [7] => KRL
                                  [kat_name] => KRL
                                  [bgcolor] => #C6C6C6
                              )
                      
                          [8] => Array
                              (
                                  [kat_name] => , EXT
                      komm aber ni richtig weiter jetzt. index 8 ist undefined bzw. kat_name
                      Zuletzt geändert von lx-club; 29.04.2004, 16:08.

                      Kommentar


                      • #12
                        welchen anfangswert hat $i denn beim ersten durchlauf ...?
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          ich habe das array mal geposted. i hat als anfangswert 0 und auch $wert_vorher = ""

                          Kommentar


                          • #14
                            probier mal
                            PHP-Code:
                            $wert_vorher 47110815;
                            while(
                            $row mysql_fetch_array($res))
                                if (
                            $row['name'] != $wert_vorher)
                                {
                                    
                            $wettkaempfe[$row['name']] = $row;
                                    
                            $wert_vorher $row['name'];
                                }
                                else
                                    
                            $wettkaempfe[$row['name']]['kat_name'] .= ', '.$row['kat_name']; 
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              Original geschrieben von lx-club
                              i hat als anfangswert 0
                              erscheint dir unter dieser voraussetzung ein zugriff $wettkaempfe[$i-1] sinnvoll?
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X