Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] SQL-Abfrage doppelte Werte

Einklappen

Neue Werbung 2019

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

  • [Erledigt] SQL-Abfrage doppelte Werte

    Hallo,

    ich habe folgende SQL Tabelle eines Spielplans mehrerer Teams eines Vereins:
    Datum | Uhrzeit | Team A | Team B |
    A | 10.00 | Team 1 | Gegner 1 |
    A | 16.00 | Team 2 | Gegner 2 |
    A | 20.00 | Team 3 | Gegner 3 |
    B | 16.00 | Team 2 | Gegner 2 |
    B | 20.00 | Team 3 | Gegner 3 |
    C | 16.00 | Team 2 | Gegner 2 |
    C | 20.00 | Team 3 | Gegner 3 |
    Insgesamt ca. 80 Einträge. Nun möchte ich folgende exemplarische html Darstellung haben, finde aber keine passende SQL Abfrage:

    PHP-Code:
    while($_fetchGames mysql_fetch_assoc($_queryGames)) {
        <
    table>
            <
    tr>
                <
    td>colspan=3Datum A </td>
            </
    tr>
            <
    tr>
                <
    td>Uhrzeit</td>
                <
    td>Team A</td>
                <
    td>Team B</td>
            </
    tr>
            <
    tr>
                <
    td>colspan=3> . $_fetchGames['matchDate'] . </td>
            </
    tr>
            <
    tr>
                <
    td>. $_fetchGames['matchTime'] .</td>
                <
    td>. $_fetchGames['teamA'] .</td>
                <
    td>. $_fetchGames['teamB'] .</td>
            </
    tr>
        <
    table>

    "Distinct" oder "group by" passt irgendwie nicht richtig. Bin nicht sicher, ob ich das überhaupt mit einer Query hinbekomme, oder ob ich ggf PHP code bauen muss. Da würde mir aber nur etwas wie While-Schleife in einer While Schleife einfallen.

    Ideen?


  • #2
    Wenn die Struktur schon so vorgegeben ist, wie du sie oben gepostet hast, brauchst du doch nur einen simplen SELECT drauf zu fahren.

    Falls du ein Kriterium zur Unterscheidung einbauen möchtest, z.B. "Datum A", dann benutz WHERE... ansonsten heisst das Zauberwort "Gruppenbruch" (erstmal alle Paarungen von Tag A, dann wieder eine Zwischenüberschrift und alle Paarungen von Tag B, usw.)

    Das Code-Konstrukt ist aber falsch, neben Syntaxfehlern ist der gröbste Logikfehler, das du die Tabelle innerhalb der while-Schleife jedesmal neu erstellst.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Dein PHP ist auch syntaktisch falsch.

      Zitat von Threadtitel
      SQL-Abfrage doppelte Werte
      Irgendwie passt das nicht dazu, oder was übersehe ich?

      "Distinct" oder "group by" passt irgendwie nicht richtig
      Wie kommst du auf die beiden? Ich verstehe das so, das du nur eine einfache Liste haben willst?

      Und das kannst du für die Ausgabedarstellung ev. auch noch brauchen: http://php-de.github.io/jumpto/gruppenbruch/

      LG
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Hallo,
        ich meinte die Ausgabe in etwa so:
        |--------------------------------|
        | Datum A |
        |--------------------------------|
        | 10.00 | Team 1 | Gegner 1 |
        | 16.00 | Team 2 | Gegner 2 |
        | 20.00 | Team 3 | Gegner 3 |
        |--------------------------------|
        | Datum B |
        |--------------------------------|
        | 16.00 | Team 2 | Gegner 2 |
        | 20.00 | Team 3 | Gegner 3 |
        |--------------------------------|
        | Datum C |
        |--------------------------------|
        | 16.00 | Team 2 | Gegner 2 |
        | 20.00 | Team 3 | Gegner 3 |
        |--------------------------------|
        Gruppenbruch klingt für mich gut, verstehe es aber einfach noch nicht. Den code habe ich exemplarisch getippt ohne zu prüfen, ob er synthaktisch 100%ig ist. Wollte ein Verständnis meiner Frage besser darstellen und daher aus meinem Code nur die "interessante Stelle" beschreiben.

        Kommentar


        • #5
          Ja, du suchst den Gruppenbruch.. Du brauchst dazu auch kein GROUP etc.. Deine reine DB Ausgabe (zB in PMA (phpMyAdmin) etc... ) sollte so aussehen, das ist die Ausgangsbasis dafür - dann kannst du nach der ersten Spalte "brechen", siehe dem Tutorial.

          Code:
          Datum A | 10.00 | Team 1 | Gegner 1 |
          Datum A | 16.00 | Team 2 | Gegner 2 |
          Datum A | 20.00 | Team 3 | Gegner 3 |
          Datum B | 16.00 | Team 2 | Gegner 2 |
          Datum B | 20.00 | Team 3 | Gegner 3 |
          Datum C | 16.00 | Team 2 | Gegner 2 |
          Datum C | 20.00 | Team 3 | Gegner 3 |
          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Sortiere die Daten nach der "Gruppe" (In deinem Fall Datum, anschliessend nach Uhrzeit)
            Merke dir die "letzte Gruppe" (anfangs leer)
            Schleife beginnt:
            Wenn "letzte Gruppe" ungleich "aktuelle Gruppe" => neue Überschrift + "letzte Gruppe" = "aktuelle Gruppe"
            Ausgabe des Datensatzes
            (Wiederholung solange Daten vorhanden sind)
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Hallo zusammen, vielen Dank. Habe es genau so hinbekommen wie es in dem Tutorial für Gruppenbruch beschrieben wurde. Spitzen Forum.

              Merci

              Kommentar


              • #8
                Sehr gut... und ein Lob für das selbständige durchlesen - behirnen - ausarbeiten!
                Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                PHP.de Wissenssammlung | Kein Support per PN

                Kommentar

                Lädt...
                X