Schrift
[thread]3371[/thread]

Kann mans nicht schöner und schneller schreiben (Seite 2)



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
Crian
 2003-11-06 10:56
#35668 #35668
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=Strat,06.11.2003, 01:42]funktioniert vielleicht
[sql]SELECT max(levelname) AS maximum FROM level WHERE 24 BETWEEN levelmIN AND levelmin + '10';
[/sql]
[/quote]

[quote=format_c,06.11.2003, 09:28]@Strat: ???
Aber was bei einem String MAX bringen soll kann ich nicht so recht nachvollziehen. Kannst du mich bitte in deinen Gedanken etwas aufklären.
[/quote]

Ich schätze Mal, Strat hatte die gleiche Idee wie ich. Wenn man nur den Maximalen Wert wollen würde und nicht den zu diesem Wert gehörigen Levelnamen, würde es mit Max gehen.

Oder man macht zwei SQL-Abfragen (keine Ahnung ob das schneller wär, wohl eher nicht), in der ersten holt man sich mit max die Nummer, in der zweiten zu dieser Nummer den Namen. (Geht auch mit subselect, etwa so:

Code: (dl )
1
2
3
4
5
6
select levelname
   from level
   where level_min = (select max(level_min)
                       from level
                       where level_min <= 25
                      );


)\n\n

<!--EDIT|Crian|1068109247-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Magic
 2003-11-06 13:14
#35669 #35669
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
Sooooo,
Crians letzter Codevorschlag kam der Sache am nächsten. Der SQLigste Befehl für die Sache ist, nach ner ganzen Zeit rumtüfteln und nachlesen folgender:
Code: (dl )
1
2
3
SELECT MIN( level_name )
FROM level
WHERE level_min <= 25

In dem Beispiel benutze ich statt max min. Das hat folgenden Hintergrund:
Der Befehl sagt ihm: Suche nach ersten( MIN ) level_min das größer ist als 25.
Bei MAX würde er den letzten Wert zurückgeben, der größer ist als 25.
Mann könnte auch nach ">=" suchen lassen, aber sorum finde ichs logischer.
Das sollte deine Frage nach dem MAX() aufklären format_c.

Naja, so simpel und man kommt nicht drauf... wahrscheinlich ists schon zu einfach. :rock:

Gruss und Dank
Stefan


@Crian: LIMIT ist eigentlich, ein Standard (My)SQL Befehl... ( siehe mysql.de )
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
Crian
 2003-11-06 14:37
#35670 #35670
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
[quote=Magic,06.11.2003, 12:14]
Code: (dl )
1
2
3
SELECT MIN( level_name )
FROM level
WHERE level_min <= 25

[/quote]

Bist Du sicher, dass das funktioniert? MIN(level_name) ???


[quote=Magic,06.11.2003, 12:14]
@Crian: LIMIT ist eigentlich, ein Standard (My)SQL Befehl... ( siehe mysql.de )
[/quote]

Aha ^^ in 2 SQL-Standard-Büchern nicht gefunden, also ist es ein mysql-Befehl, kein Standard-Befehl. Und ich hab kein MySql ;-)

Edit: Funktionierte mein Befehl mit Subselect denn?

Edit2: Falls Dein Befehl funktioniert, dann wahrscheinlich nur aufgrund des Aufbaus Deiner Levelnamen?!\n\n

<!--EDIT|Crian|1068122396-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Magic
 2003-11-06 14:43
#35671 #35671
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
Und wie das funktioniert, so mach ich&´s ja nun.

Und was das LIMIT angehr. Ist dann wahrscheinlich nen MySQL-Befehl und dass du kein MySQL hast ist ja logisch, ist schliesslich MySQL und nich DeinSQL *boah war der schlecht ;-)

Gruss
Stefan
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
Crian
 2003-11-06 14:47
#35672 #35672
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Dann erzähl mal, wie Deine Levelnamen heißen, ich kann mir nur vorstellen, dass das zufällig funktioniert.

Wenn ich falsch liege würde ich gerne hören, warum das so geht, wo Du Dich doch gerade schlau gelesen hast :)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
Magic
 2003-11-06 14:58
#35673 #35673
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
NENENE... Alles UNFUG WAS HIER STAND.....
ich tüftle nochmal\n\n

<!--EDIT|Magic|1068124106-->
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
format_c
 2003-11-06 14:58
#35674 #35674
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
[quote=Magic,06.11.2003, 12:14]Sooooo,
...:
Code: (dl )
1
2
3
SELECT MIN( level_name )
FROM level
WHERE level_min <= 25

In dem Beispiel benutze ich statt max min. Das hat folgenden Hintergrund:
Der Befehl sagt ihm: Suche nach ersten( MIN ) level_min das größer ist als 25.
Bei MAX würde er den letzten Wert zurückgeben, der größer ist als 25.
Mann könnte auch nach ">=" suchen lassen, aber sorum finde ichs logischer.
Das sollte deine Frage nach dem MAX() aufklären format_c.

Naja, so simpel und man kommt nicht drauf... wahrscheinlich ists schon zu einfach. :rock:

Gruss und Dank
Stefan


@Crian: LIMIT ist eigentlich, ein Standard (My)SQL Befehl... ( siehe mysql.de )[/quote]
Jetzt kappier ich gar nix mehr.
levelname kann von mir aus
groß
mittel
klein
sein.

Ergo würde MAX(levelname), gesetz dem Fall dass die Abfrage diese Drei Datensätze ausgeben würde, groß ausgeben, wenn überhaup.
Denn g ist vor k ist vor m.

wenns ganz dumm läuft vergleicht er nicht als string sonder binär. Muaha da wirds dann schaurig tolle Phänomäne geben.

Aber wenn du meinst.

Das mit MAX funktioniert nur dann wenn man es so macht wie Crian es vorgeschlagen hat. Aber da geht IMHO die Übersichtlichkeit als auch die Performanz irgendwo flöten und haben wohle eher umgekehrtes wie gewünscht erlangt.

Also ohne weiter drüber nachzudenken, glaube ich dass es mit MAX respektive MIN keine elegantere Lösung zu diesem Ansatz gibt.

Gruß Alex\n\n

<!--EDIT|format_c|1068123622-->
Magic
 2003-11-06 15:11
#35675 #35675
User since
2003-09-30
91 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm... hab Unfug erzählt. Hat zwar bei mir geklappt, aber auch nur durch Zufall :-((
Nun weiss ich gar nicht mehr weiter. Vielleicht mach ich&´s wie ganz am Anfang *schnüff:(
Ein Weiser gibt nicht die richtigen Antworten, sondern er stellt die richtigen Fragen.
Crian
 2003-11-06 15:35
#35676 #35676
User since
2003-08-04
5873 Artikel
ModeratorIn
[Homepage]
user image
Ich schätz mal die Level heißen level1, level2, level3 ... dann klappts zufällig.

[quote=format_c,06.11.2003, 13:58]Das mit MAX funktioniert nur dann wenn man es so macht wie Crian es vorgeschlagen hat. Aber da geht IMHO die Übersichtlichkeit als auch die Performanz irgendwo flöten und haben wohle eher umgekehrtes wie gewünscht erlangt.
[/quote]

Performanz schon. Übersichtlicher finde ich es aber, aber das ist wohl wie immer eine Gewöhnungsfrage. Wenn man viel mit subselects arbeitet(e) mag man das irgendwann ;-)\n\n

<!--EDIT|Crian|1068125745-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2003-11-05 17:02.