Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

MYSQLI Rang-Kennzeichnung

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von alexfrenzel92, 28 Februar 2016.

  1. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Hallo,
    Kann man per SQLi kennzeichnen, wie hoch ein Wert in einer sortierten Liste ist?

    Würde man die Werte 3,1,4,4,8 sorieren, so bekäme man die Werte in der jeweils gleichen Spalte 2,1,3,3,4

    Irgendwas sagt mir, dass das mit Rownumber oder Numrows gehen könnte.

    Habe aber nicht wirklich ne klare Ahnung
    Danke,
    Alex
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Dafür gibt es rank() und dense_rank() in richtigen Datenbanken:

    Code:
    test=*# select * from alex ;
     val
    -----
      3
      1
      4
      4
      8
    (5 rows)
    
    test=*# select *, rank() over (order by val), dense_rank() over (order by val) from alex ;
     val | rank | dense_rank
    -----+------+------------
      1 |  1 |  1
      3 |  2 |  2
      4 |  3 |  3
      4 |  3 |  3
      8 |  5 |  4
    (5 rows)
    
    Da Du MySQL erwähnt hattest: das ist keine richtige Datenbank und kann das daher nicht.
     
  3. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    Hm, was ist ein Beispiel für eine echte Datenbank?
    d.h. es gibt mit mySQL(i) keine Möglichkeit dafür?
    rank und dense_rank wären genau richtig.

    Macht nicht MySqli_num_rows() genau das gleiche?
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Das mysql(i) ist nur eine Treiber-Geschichte (PHP). Das MySqli_num_rows() gibt (IIRC) die Anzahl der Zeilen im resultset zurück - hat nix mit dem zu tun, was Du suchst. Das, was Du suchst, kann MySQL schlicht nicht.
     
  5. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    ok verstehe. Was ist denn so die beste Programmiersprache (richtiger Ausdruck?) für Datenbankabfragen?
    Bisher habe ich gehört von MySql, MySqli, Asp, Transact-Sql. Das glaube ich wars. Was würdest du grundsätzlich empfehlen?
    In welchen Datenbanken (ist sql überhaupt eine Datenbank? Ich dachte nur eine Sprache, die aus einer Datenbank abfrägt..?) ist rank, dense_rank möglich?
     
  6. akretschmer

    akretschmer Datenbank-Guru

    Die Features, die eine DB anbietet, hängt von der DB ab. MySQL, MySQLi sind z.B. beide MySQL, nur ist MySQLi (das mit dem i) nur ein anderer PHP-Treiber. Ob Du mit MySQL oder MySQLi (als PHP-Treiber) eine MySQL 4.1 oder 5.7 ansprichst ist dabei egal - Du kannst aber nur Features nutzen, die die DB selbst bietet. Und das Feature-Set von MySQL ist nun mal, ähm, überschaubar.

    SQL ist eine Sprache. So wie Deutsch. So wie die Bayern die Leute von der Waterkant ned verstehen versteht z.B. MySQL aber nicht unbedingt den Dialekt von PostgreSQL - und umgedreht.

    Rank() und Dense_rank() kann Oracle, vermutlich M$-SQL, PostgreSQL. Ich denke mal auch Informix, DB2, und einige weitere. Empfehlen kann ich nur eines (aus Kosten- und Featuresicht): PostgreSQL. Kostet nix, kann alles. Und ich verdiene (ab April zu 100%) mein Brot damit.
     
  7. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    :D
    Na dann werde ich mal auf Postegre umstellen.
     
    akretschmer gefällt das.
  8. alexfrenzel92

    alexfrenzel92 Datenbank-Guru

    und danke für die Antworten!
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden