Ankündigung

Einklappen
Keine Ankündigung bisher.

Anzahl in Abfrage berücksichtigen

Einklappen

Neue Werbung 2019

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

  • Anzahl in Abfrage berücksichtigen

    Hallo,

    vielleicht kann mir jemand helfen.

    ich habe eine DB mit der ich eine Rangliste rechne. Das funktioniert auch gut.

    query
    Code:
    INSERT INTO `2017`
    (
    `Name`,
    `verein`,
    `klasse`,
    `id_nummer`,
    `punkte`,
    `ak_punkte`
    )
    SELECT  
    `Name`,
    `verein`,
    `klasse`,
    `teilnehmer_id`,
    sum(punkte)    AS best8,
    sum(ak_punkte) AS bestak
    FROM     cupwertung
    JOIN     `rennen`
    ON       rennen.id = cupwertung.rennen
    WHERE    cup= 1
    AND
    (
    SELECT count(*)
    FROM   cupwertung AS t
    WHERE  cup='1'
    AND    t.`teilnehmer_id` = cupwertung.`teilnehmer_id`
    AND    t.punkte >= cupwertung.punkte) <=9
    AND
    (
    SELECT count(*)
    FROM   cupwertung AS t
    WHERE  cup='1'
    AND    t.`teilnehmer_id`=cupwertung.`teilnehmer_id`
    AND    t.ak_punkte >= cupwertung.ak_punkte) <=9
    AND      `date`BETWEEN '2017-01-01' AND      `date` <= '2017-12-01'
    GROUP BY `Name`
    ORDER BY best8 DESC
    doch nun ergibt sich in der neuen Saison ein Problem welches ich im Moment gedanklich nicht lösen kann.
    Wie hier zu sehen ist werden aus allen Werten nur die besten 9 (best gewertet. Doch sollte ein Teilnehmer mehr als die 9 Wettkämpfe bestritten haben, so erhält er einen Bonus von 10 Punkten pro gestrichenem Rennen. Auch gibt es immer wieder ein Problem, wenn die letzten beiden Werte == sind, dann werden beide gestrichen. Wie kann ich das im Query berücksichtigen, oder sollte ich es besser komplett mit php machen?

    Für Hinweise wäre ich dankbar.

  • #2
    Der Code ist so überhaut nicht lesbar. Bitte lesbar einrücken.

    Bei Abfrageproblemen bitte auch immer die Tabellenstruktur mit Testdaten als SQL-Code posten.

    Kommentar


    • #3
      wie schon gesagt wurde, plus:
      Select Statements mit Spaltenangaben inkl. Alias würden das Verständnis des Statements auch erleichert.
      (nicht mehr so dramatisch, sobald Tabellen Definitionen mitgeliefert werden, aber weder noch macht es nicht einfacher)

      Zu Deiner Frage:
      "wenn die letzten beiden Werte == sind, dann werden beide gestrichen"
      Welche letzten beiden Werte?
      Nach welcher Sortierung?
      Wo(raus) werden sie gestrichen?

      P.S.: Es gibt diverse Internet Seiten, wo man sein SQL Statement formatieren lassen kann, kostenlos, copy/paste, Kopfdruck. Einfach mal nach SQL Formatierung suchen und nehmen, was einem am besten gefällt.

      Kommentar


      • #4
        Zitat von Perry Staltic Beitrag anzeigen
        wie schon gesagt wurde, plus:
        Select Statements mit Spaltenangaben inkl. Alias würden das Verständnis des Statements auch erleichert.
        (nicht mehr so dramatisch, sobald Tabellen Definitionen mitgeliefert werden, aber weder noch macht es nicht einfacher)

        Zu Deiner Frage:
        "wenn die letzten beiden Werte == sind, dann werden beide gestrichen"
        Welche letzten beiden Werte?
        Nach welcher Sortierung?
        Wo(raus) werden sie gestrichen?

        P.S.: Es gibt diverse Internet Seiten, wo man sein SQL Statement formatieren lassen kann, kostenlos, copy/paste, Kopfdruck. Einfach mal nach SQL Formatierung suchen und nehmen, was einem am besten gefällt.
        So formatiert ist, nun zu den Fragen die Summe wird über "[SUM(Punkte) AS best8" und "SUM(ak_punkte) AS bestak" und über die subquerys auf 9 Sätze begrenzt.


        Es werden aus cupwertung wo alle Ergebnisse gespeichert wurden die besten 9 einer jeden Saison des jeweiligen Sportlers gewertet. Nun gibt es aber SPortler die nur 4 Ergebnisse haben und manche haben 14 Ergebnisse. Ich hoffe es ist nun verständlich.

        Kommentar


        • #5
          Nix ist da formatiert. Jetzt ist es nur noch kleiner und unleserlicher als vorher.

          Und die Tabellenstruktur bitte als SQL-Code und nicht als HTML-Tabelle posten. Testdaten waren übrigens keine dabei.

          Ich hoffe dir ist bewusst, dass das kaputtes Datenbankdesign ist, wenn du Tabellennamen nummerierst? Ich würdes es gleich ordentlich machen und nicht so eine kaputte Bastellösung, die genau einmal funktioniert.

          Kommentar


          • #6
            Zitat von hellbringer Beitrag anzeigen
            Nix ist da formatiert. Jetzt ist es nur noch kleiner und unleserlicher als vorher.

            Und die Tabellenstruktur bitte als SQL-Code und nicht als HTML-Tabelle posten. Testdaten waren übrigens keine dabei.

            Ich hoffe dir ist bewusst, dass das kaputtes Datenbankdesign ist, wenn du Tabellennamen nummerierst? Ich würdes es gleich ordentlich machen und nicht so eine kaputte Bastellösung, die genau einmal funktioniert.
            Weißt du, das funktioniert schon fast 10 Jahre. Wir hatten beide hier schon öfter mal die Gelegenheit. Du solltest einmal dringend über deine Etikette nachdenken. Es macht der Ton. Nicht das ich empfindlich bin aber dein von oben herab zeigt mir, das du entweder sehgr jung bist oder Dozent mit sehr mangelhaftem pädagogischem Wissen. Wie dem auch sei, bitte verschone mich in Zukunft mit deinen Nettigkeiten. Apropos, falls es dir hier noch nicht aufgefallen ist, die meisten gehen hier sehr vernüftig miteinander um und versuchen zu helfen.

            Kommentar


            • #7
              Deine Lebensgeschichte und dein Gesülze interessiert mich nicht. Warum kann man nicht von Anfang an das geforderte liefern? Warum muss man mühsam um alles hundertmal bitten und betteln? Du willst das dein Problem gelöst wird, warum legst du anderen also Steine in den Weg? Mit 363 Beiträgen solltest du langsam wissen, wie ein Forum funktioniert und wie man Probleme beschreibt.

              Wenn du ein Problem mit deinem Auto hast, kommst du dann am ersten Tag bei der Werkstatt ohne Auto vorbei, beim zweiten Tag mit einem Foto vom Auto, am dritten Tag nimmst du dann paar Kabel mit, die du abgesteckt, hast, usw.? Hältst du das für zielführend? Was ist so schwer daran, wenn der KFZ-Meister am Telefon sagt "Kommen Sie mit dem Auto vorbei" das auch zu machen (zumindest solange es noch irgendwie fahrtüchtig ist)? Willst du andere damit pflanzen indem du absichtlich das Gegenteil machst?

              Kommentar


              • #8
                Was bedeutet eigentlich das SQL Statement? Ist das das was "gut funktioniert" oder das, was auf halbem Weg ist?
                Hast Du es so schon mal laufen lassen, ich würde sagen das geht nicht.

                Zur Formatierung:
                Einrücken ist schon was wert, code tags drum und fertig.
                Zu den Tabellen:
                Tabelle Rennen fehlt, das Table Create Statement in Codetags und fertig. Gridformatierung ist überflüssig, hilft (mir) nicht.
                Daten wären auch nicht schlecht.

                Du hast meine Fragen nicht vollständig beantwortet.

                Hellbringer hat inhaltlich schon recht. Ich weiß nicht, wie Du Dir so eine Hilfe oder einen Helfer vorstellst. Es sind keine Seher oder Halbgötter dabei. Man benötigt möglichst exakte Informationen, um Fragen wie diese zu beantworten. Das bedeutet DDL Statements der betroffenen Tabellen, Beispieldaten, SQL Code, Erläuterungen bis hin zu sprechenden Feldnamen. Wenn ich die Nutzung von Aliasen empfehle, ist das nicht nur, weil ich es mag, es ermöglicht Verständnis.

                Alles was Du proaktiv zum Verständnis Deines Problems beiträgst, erhöht die Chance, einen Helfer zu finden. Ich kann Dir verraten, dass selbst professionelle Supportverträge bzw. die tatsächliche Hilfe durch (teuer) bezahlte Fachkräfte genau so funktioniert. Unbeantwortete Fragen bringen den Supportprozess schlicht zum Stehen.

                Kommentar


                • #9
                  Zitat von Perry Staltic Beitrag anzeigen
                  Was bedeutet eigentlich das SQL Statement? Ist das das was "gut funktioniert" oder das, was auf halbem Weg ist?
                  Hast Du es so schon mal laufen lassen, ich würde sagen das geht nicht.

                  Zur Formatierung:
                  Einrücken ist schon was wert, code tags drum und fertig.
                  Zu den Tabellen:
                  Tabelle Rennen fehlt, das Table Create Statement in Codetags und fertig. Gridformatierung ist überflüssig, hilft (mir) nicht.
                  Daten wären auch nicht schlecht.

                  Du hast meine Fragen nicht vollständig beantwortet.

                  Hellbringer hat inhaltlich schon recht. Ich weiß nicht, wie Du Dir so eine Hilfe oder einen Helfer vorstellst. Es sind keine Seher oder Halbgötter dabei. Man benötigt möglichst exakte Informationen, um Fragen wie diese zu beantworten. Das bedeutet DDL Statements der betroffenen Tabellen, Beispieldaten, SQL Code, Erläuterungen bis hin zu sprechenden Feldnamen. Wenn ich die Nutzung von Aliasen empfehle, ist das nicht nur, weil ich es mag, es ermöglicht Verständnis.

                  Alles was Du proaktiv zum Verständnis Deines Problems beiträgst, erhöht die Chance, einen Helfer zu finden. Ich kann Dir verraten, dass selbst professionelle Supportverträge bzw. die tatsächliche Hilfe durch (teuer) bezahlte Fachkräfte genau so funktioniert. Unbeantwortete Fragen bringen den Supportprozess schlicht zum Stehen.
                  Da hast du Recht. Es ging mir nur um die Form. Inhaltlich bestimmt richtig, wobei sich die Statements die ich bemängelte generell mit Inhalt nicht glänzen. Aber egal es ist es nicht weiter wert.

                  Also das query läuft. DIe Testdaten aus den Tabellen folgen.

                  Kommentar


                  • #10
                    xxx

                    Kommentar


                    • #11
                      Kann doch nicht so schwer sein. Mach einen SQL-Dump deiner DB mit Struktur und einigen* Testdaten und stelle das hier rein(copy und paste) und nicht als download auf irgendwelchen Seiten, wo man nicht weiss was man sich da einfängt.

                      Das kannst du mit PHPmyAdmin, PGAdmin oder sonst einem Admininstrations-Werkzeug für deine DB ziemlich einfach erledigen.

                      *Testdaten sollten Daten sein, die keine persönlichen Daten enthalten und dein Problem nachvollziehbar machen.

                      Kommentar


                      • #12
                        Zitat von protestix Beitrag anzeigen
                        Kann doch nicht so schwer sein. Mach einen SQL-Dump deiner DB mit Struktur und einigen* Testdaten und stelle das hier rein(copy und paste) und nicht als download auf irgendwelchen Seiten, wo man nicht weiss was man sich da einfängt.

                        Das kannst du mit PHPmyAdmin, PGAdmin oder sonst einem Admininstrations-Werkzeug für deine DB ziemlich einfach erledigen.

                        *Testdaten sollten Daten sein, die keine persönlichen Daten enthalten und dein Problem nachvollziehbar machen.
                        Sorry, aber das Forum lässt nicht zu das ich Anhänge mit .sql hochlade daher der Umweg als ZIP.

                        Kommentar


                        • #13
                          Schau mal an wie man das macht ->> https://www.php.de/forum/webentwicklung/php-einsteiger/1505580-string-mit-wörtern-und-zahlen-um-1-erhöhen?p=1505591#post1505591

                          Kommentar


                          • #14
                            Danke das werde ich heute Abend mal fertig machen

                            Kommentar


                            • #15
                              Zitat von Cyclestores Beitrag anzeigen

                              Es ging mir nur um die Form. Inhaltlich bestimmt richtig, wobei sich die Statements die ich bemängelte generell mit Inhalt nicht glänzen.
                              Also das query läuft. DIe Testdaten aus den Tabellen folgen.
                              Es geht nicht um glänzenden Inhalt, es geht um Klarheit und Übersichtlichkeit. Deine Daten im Grid sind hübsch, aber Du machst Dir Arbeit, die Helfer bremst. Datengrids usw. ist vlt was für Powerpoint, hier geht es aber im Zweifel darum, dass man das lokal oder auf irgendeinem öffentlichen(!) Webserver (rextester.com, ..) eben einspielen kann und durchsehen, wo es hakt. Also noch mal, es mag sein, das jemand hier die Gabe hat, unformatierte, komplexe Statements ohne Tabellendefinition ohne Daten oder auch gleich mit einem riesen Haufen Daten zu durchdenken und sozusagen als Brainparser Fehler und Lücken findet. Diese Leute gibt es sicher, aber die arbeiten wahrscheinlich irgendwo eingesperrt für viel Geld und niemand soll es möglichst erfahren.
                              Es läuft andersrum, ein Script mit Tabellen, Daten und Problemsql, das so durchläuft. 20, 50, .. Datensätze genügen, weniger ist mehr. Du spuckst es mit Deinem SQL Tool einfach aus, lädst es in einer 2. DB rein, editierst die Daten sinnvoll, per Hand oder Delete, exportierst es noch mal und fertig.
                              Im ZIP war ja schon der richtige Anlauf. Nur die Daten nicht ganz wie es sein sollte.



                              Kommentar

                              Lädt...
                              X