"We are back" « oc.at

MySQL Problem

mephisto 27.02.2003 - 22:17 938 15
Posts

mephisto

Big d00d
Avatar
Registered: Apr 2001
Location: WU
Posts: 152
Also ich hab folgendes Problem und hab keine Ahnung wie der shit funktioniern soll!

Folgende Tabelle(Auszug):

RECHNER_ID IP MAC TAKT SPEICHER ....
1 .... .... 1800 256
2 .... .... 500 126
3 .... .... 1800 256
4 .... .... 600 256
5 .... .... 1700 256
6 .... .... 1800 256

Okay und jetzt folgendes Problem ich brauch die IP Adresse + die Mac Adresse des/der schnellesten(Takt) Rechner.

Hat da wer ne Ahnung? Ich hab mich mit der max Funktion rumgespielt aber die braucht wieder ne group by Klausel und mit der fang ich bei der Tabelle nichts an....


TIA

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
unter oracle würde man jetzt sub-select einsetzen zb mit

select ip,mac from rechner r where r.takt=(select max(rm.takt) from rechner rm)

unter mysql musst du zwei abfragen machen (das ergebnis der einen in die andere einsetzen), oder du versuchts es mit folgender kombination:

select r1.ip,r1.mac,r1.takt,max(r2.takt) from rechner r1, rechner r2 group by r1.ip, r1.mac, r1.takt having r1.takt=max(r2.takt)
Bearbeitet von atrox am 27.02.2003, 22:39 (readability and s/havint/having/)

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
SELECT MAX(TAKT), IP, MAC FROM TABLE GROUP BY TAKT

richtig herr lehrer?
mit subselect bzw. views würd ich es schaffen aber so .. :D

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
das liefert zu jedem möglichen takt-wert einen rechner, nicht aber den schnellsten.

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
trotz MAX(TAKT) ?

mephisto

Big d00d
Avatar
Registered: Apr 2001
Location: WU
Posts: 152
@vossi ja so hab ichs auch probiert aber da kommt genau das raus was atrox sagt!

@atrox Wow das paßt! genau das was ich wollte thx da wär i selbst echt nicht draufgekommen!Wieder was gelernt :-)

THX

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
hach 3 bier auf nüchternen magen und ich kann kein SQL mehr *ausrede such* ;)

kleinerChemiker

Here to stay
Avatar
Registered: Feb 2002
Location: Wien
Posts: 4303
SELECT ip, mac FROM table ORDER BY takt LIMIT 10

sollte die ip&mac der 10 schnellsten rechner ausgeben

MIK

maverick81

Big d00d
Avatar
Registered: Dec 2002
Location: Stmk/GU
Posts: 130
Zitat von vossi
SELECT MAX(TAKT), IP, MAC FROM TABLE GROUP BY TAKT

richtig herr lehrer?
mit subselect bzw. views würd ich es schaffen aber so .. :D

Der Ausdruck stimmt fast!

MAn muss es nur ein wenig anders anordnen:

SELECT IP, MAC FROM Tablename WHERE TAKT = MAX(TAKT)

Das sollte funktionieren!!

mfg mav!

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von maverick81
Der Ausdruck stimmt fast!

MAn muss es nur ein wenig anders anordnen:

SELECT IP, MAC FROM Tablename WHERE TAKT = MAX(TAKT)

Das sollte funktionieren!!

mfg mav!
afair geht das im mysql so nicht... :rolleyes:

Maehmann

OC Addicted
Avatar
Registered: Aug 2002
Location: Vienna
Posts: 1110
das geht auch so nicht ;) "Invalid use of Group Function"

sim

Bloody Newbie
Registered: Jul 2002
Location: vienna
Posts: 40
eine harte lösung für dein problem wär die tabelle als innoDB (derzeit wohl myISAM) anlegen und dann subselect machen :)

ab mysql 4.0 kannst des machen.

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14710
Zitat von kleinerChemiker
SELECT ip, mac FROM table ORDER BY takt LIMIT 10

sollte die ip&mac der 10 schnellsten rechner ausgeben

MIK
so muss es doch auch gehen?

gibt die 10 schnellstn aus

oder funkt des ned (nur aus interesse)

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
fast.
gemeint wäre natürlich ein "ORDER BY takt DESC LIMIT 1"
der unterschied liegt im detail: diese query lieftert nur einen eintrag, auch wenn es mehrere "erste plätze" gibt.

Snoop

Here to stay
Registered: Jun 2002
Location: Gablitz
Posts: 1092
SELECT takt, MAX(takt) AS maximal FROM $table WHERE takt =< maximal GROUP BY id ORDER BY takt DESC würd ich mal sagen das müsste rein theroretisch funzen :)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz