Robert: MySQL: Select von Spalten, wenn eine der Spalten max() sein soll

Hallöle,

ich habe ein kleines Problemchen.

Hier erstmal meine Tabelle:

create table actions
(
        id int auto_increment not null,
        session int not null,
        sequence int not null,
        action int not null,
        state varchar(10),
        info varchar(100),

primary key id (id),
        unique key sessionsequence (session, sequence),
        key action (action)
);

id ist nur als primary key, wird für nichts anderes verwendet als für die Identifizierung (wird also als foreign key in anderen Tabellen benutzt).

action ist der Name einer Aktion.
sequence ist die Nummer der Aktion innerhalb einer Session (also die wievielte Aktion innerhalb der Session)
State und Info sind weitere Informationen zu der Aktion.

Was ich jetzt gerne hätte:
zu einer bestimmten Session die letzte Aktion (sprich: die mit der höchsten Nummer in sequence), und von ebendieser Aktion alle Spalten.

Mit
select max(sequence) from actions where session=17
bekomme ich zwar die gewünschte sequence-Nummer, hab damit also schon 2 Spalten (session und sequence), aber wie bekomme ich jetzt die anderen Spalten dazu?

select id, session, sequence, action, state, info from actions where session = 17 and sequence = (select max(sequence) from actions where session=17)

erscheint mir etwas umständlich wegen des nötigen Subselects.

Geht das auch irgendwie einfacher?

Verwendete DB: MySQL 5.0.15

TIA
cu,
Robert

  1. Hi,

    Mit
    select max(sequence) from actions where session=17
    bekomme ich zwar die gewünschte sequence-Nummer, hab damit also schon 2 Spalten (session und sequence), aber wie bekomme ich jetzt die anderen Spalten dazu?

    Dir ist aber schon bewusst, dass Du hier nicht einfach nur Spalten zurück erwarten darfst, sondern _mehrere Datensätze_? Es existiert keine technische Einschränkung, nach der das Ergebnis von MAX() nur den Wert eines einzigen Datensatzes betreffen kann. Daher kann es nicht möglich sein, "die anderen Spalten dazu zu bekommen".

    Geht das auch irgendwie einfacher?

    Nicht wirklich, wirklich nicht.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Huhu Robert,

    Was ich jetzt gerne hätte:
    zu einer bestimmten Session die letzte Aktion (sprich: die mit der höchsten Nummer in sequence), und von ebendieser Aktion alle Spalten.

    Mmmmmh, tut es da nicht einfach ein

    select id, session, sequence, action, state, info from actions where session = 17 order by sequence DESC LIMIT 0,1

    ?

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday