Anzeige:
Ergebnis 1 bis 5 von 5

Thema: SQL-Abfrage -- brauche Hilfe

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.12.2002
    Beiträge
    15

    SQL-Abfrage -- brauche Hilfe

    Ich habe folgendes Problem :
    Ich habe Daten in einer Datenbank für ein Forum, jedoch habe ich unter mySQL folgendes Problem :

    Meine Tabelle hat folgende Struktur :
    - kategorie_id {INT}
    - thread_id {INT}
    - beitrag_id {INT}
    - titel {VARCHAR}
    - datum {DATETIME}

    Daten wären zum Bsp :

    0 0 0 Titel1 2003-12-19 20:00:00
    0 1 0 Titel2 2003-12-19 20:01:00
    0 2 0 Titel3 2003-12-19 20:10:00
    0 0 1 RE:Titel1 2003-12-19 20:23:00

    Ich möchte nun die Threads in der Kategorie auslesen und aber auch das Datum der Beiträge beachten
    -> es sollte als erstes der Thread angezeigt werden, wo der letzte Beitrag geschrieben wurde !!
    Logische Folge für meine Abfrage als Antwort wäre nun, wenn mich nur die Thread_id interessiert :
    0 - 2 - 1 (halt nach Datum sortiert), jedoch bekomme ich grade diese Abfrage nicht hin.

    Ich habe es schon erfolglos mit diesen beiden Abfragen probiert :

    1. SELECT thread_id FROM table WHERE kategorie_id = 0 GROUP BY thread_id, datum

    2. SELECT thread_id FROM table WHERE kategorie_id = 0 GROUP BY thread_id ORDER BY datum

    Jedoch funktioniert beides nicht und ich hab leider keine Idee mehr, wie es hinbekommen könnte, daher hoffe ich, dass jmd von Euch für mich einen entscheidenen Tipp hat.

    Vielen Dank

    Sebastian

  2. #2
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    mhh also mit oracle wüsste ich schon wie des geht
    mal sehen

    select kategorie_id, thread_id, max(datum) from table group by kategorie_id, thread_id order by datum desc

    so bekommst du des glaub ich eher hin ^^
    deine where klausel auf 0 einzurschränken ist natürlich eigentlich sinnlos, da du ja nicht nur die 0er sehen willst sondern eigentlich alle beiträge ;P

    bis denn

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.09.2002
    Beiträge
    32
    Code:
    SELECT thread_id FROM table WHERE kategorie_id = 0 ORDER BY datum DESC
    Verstehe nicht, wieso du das nicht so machst. Ist doch das einfachste - oder geht es so auch nicht? Bzw. erreichst du so nicht das was du erreichen willst?

    gruss
    martin

  4. #4
    Registrierter Benutzer
    Registriert seit
    28.08.2002
    Beiträge
    496
    so nicht ganz ...
    so bekommst du mehr sachen zurück die du nicht haben willst musst du dir mal dieses forum vorstellen welches in verschiedene bereiche eingeteilt ist
    z.B. Datenbanken

    darunter hängen dann die threads
    z.B. SQL-Abfrage -- brauche Hilfe

    bei dir würde jetzt alle beiträge des forums Datenbanken nach datum sortiert zurückkommen, aber nicht von jedem einzelnen thread der aktuellste Beitrag was eigentlich gewünscht war

    greetz

  5. #5
    Registrierter Benutzer Avatar von elrond
    Registriert seit
    03.10.2001
    Ort
    potsdam
    Beiträge
    881
    ich versuch's mal:

    select thread_id,max(datum) as dat from table group by thread_id order by datum desc

    da du in der mysql wahrscheinlich keine subqueries zur verfügung hast kannst du das ergebnis der abfrage auf ein array legen oder auch in eine temp tabelle packen.

    In der zweiten abfrage kannst du damm mit diesen Daten den tatsächelichen beitrag raussuchen.

    ein mögliches Subselect würde die sache vereinfachen:


    select * from table t, (select thread_id,max(datum) as dat from table group by thread_id order by datum desc) tt
    where t.thread_id=tt.thread_id
    and t.datum=tt.dat
    "Um die Welt zu ruinieren, genügt es, wenn jeder seine Pflicht tut." (Winston Churchill)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •