MYSQLI Rang-Kennzeichnung

alexfrenzel92

SQL-Guru
Beiträge
122
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
 
Werbung:
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.
 
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?
 
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.
 
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?
 
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.
 
Werbung:
Zurück
Oben