[MSSQL] Hilfe!!! Highscore zum Vorkommens von Eigenschaften bei versch. Datensätze

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

  • [MSSQL] Hilfe!!! Highscore zum Vorkommens von Eigenschaften bei versch. Datensätze

    Hallo Leute!
    Ich habe die folgenden zwei Probleme und weiß nicht, wie ich sie lösen soll..
    ----------------

    1. Problem:
    Ich habe eine einzige Datenbank, die Datensätze von Kanu-Vereinsveranstaltungen enthält.
    Die Daten sind folgendermaßen gespeichert:

    'ID','veranstaltung','bootsID','kilometer'

    nun will ich von meinen zahlreichen Datensätzen eine Bootstyp-Highscore erstellen um so zu sehen, welche Boote am häufigsten gefahren wurden. Dabei sollte das Ganze folgendermaßen angezeigt werden:

    z.B.:
    1. Platz zyx (mit xyz Datensätzen)
    2. Platz zyx (mit xyz Datensätzen)
    3. Platz zyx (mit xyz Datensätzen)
    4. Platz zyx (mit xyz Datensätzen)
    5. Platz zyx (mit xyz Datensätzen)

    zyx ist die vorkommende bootsID
    xyz ist die Anzahl der Datensätze mit dieser ID


    Ist es möglich, diese Häufigkeitsabfrage mit einer möglichst simplen mysql-Abfrage zu realisieren? Hat jm. eine Ahnung wie so etwas aussehen würde?


    2. Problem:
    Ich habe 2 Datenbanken. Die Erste enthält Datensätze, die unter anderem jeweils die UserID einer Person enthalten. Mit PHP lese ich aus der 2. Datenbank dann zur UserID den entsprechenden Namen für deen Datensatz aus.

    Wenn ich nun die Datensätze der 1. Datenbank per Mysql-Abfrage so sortieren will, dass diese entsprechend der Namen und nicht entsprechend der userID aus der 2. Datenbank sortiert werden sollen, dann komme ich mit meinen geringen Mysql-Kenntnissen an eine Grenze.
    Weiß hier jemand Rat? Es wäre schon, wenn das Ganze ohne Arrays realisiert werden könnte (aber vielleicht geht es ja nicht anders..)

    Vielen Dank schoneinmal für eure Mühen!!

    Mfg Sebastian

    www.muenster.org/paddelsport

  • #2
    zu 1) [ungetestet]
    Code:
    SELECT
        V.bootsID,
        B.bootsname,
        COUNT(V.bootsID) anzahl,
        SUM(V.kilometer) km
    FROM
        veranstaltungen V
            LEFT JOIN boote B USING(bootsID)
    GROUP BY
        V.bootsID,
        B.bootsname
    ORDER BY
        km DESC
    zu 2)
    wenn du in zwei verschiedenen DBs user und daten ablegst, kannst du das nur mit zwischen-arrays lösen.

    abhilfe kannst du nur schaffe, wenn user und daten in der gleichen DB sind.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      @123456
      redest du von datenbanken oder von tabellen?
      @Abraxax
      selbst wenn's datenbanken sind, kann er doch den db-namen vor den tabellennamen schreiben
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Original geschrieben von mrhappiness
        selbst wenn's datenbanken sind, kann er doch den db-namen vor den tabellennamen schreiben
        aber dann wahrscheinlich auch nur, wenn sie auf dem selben host liegen oder?

        ich selber habe das noch nie mit den zwei DBs gemacht. aber wenn du sagst, dass das geht, glaube ich es dir..
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          dein vertrauen ehrt mich

          und: ja, es geht, wenn die auf dem gleichen host liegen. wenn ich aber für db 2 andere parameter bei mysql_connect brauche als für db 1, fliege ich ganz fuchtbar übel auffe fresse
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            [...] fliege ich ganz fuchtbar übel auffe fresse
            was ja auch meistens der fall sein wird. zumindest bei hostern würde ich das mal sagen.....
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              @ mrhappiness: Sorry, ich meinte tabellen.
              @ Abraxax: Danke für die schnelle Hilfe. Ich werde den mysql-befehl ausprobieren. Hoffentlich klappt es. Auf jeden Fall schon einmal vielen Dank!!

              Dass es mit Fall 2 ohne arrays nicht funktioniert hab ich schon befürchtet. schade, schade...

              Kommentar


              • #8
                Ich habe festgestellt, dass folgender Code das Problem

                SELECT bootsID, COUNT(*) FROM tabellenname GROUP BY bootsID ORDER BY `COUNT(*)` DESC LIMIT 0, 5

                einwandtfrei löst. Trotzdem vielen Dank für eure Hilfe! Viele Grüße!

                Sebastian

                www.muenster.org/paddelsport

                Kommentar


                • #9
                  so kannst du es besser machen..

                  Code:
                  SELECT
                      bootsID,
                      COUNT(*) C
                  FROM
                      tabellenname
                  GROUP BY
                      bootsID
                  ORDER BY
                      C DESC
                  LIMIT 0, 5
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar

                  Lädt...
                  X