SQL Problem

Dieses Thema im Forum "SQL und Datenbanken" wurde erstellt von foexle, 09.12.2008.

  1. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    Sers Leute,

    ich habe ein Problem und weis keine antwort darauf wie ich den SQL-Befehl schreiben kann.

    Es geht um folgendes.
    Ich habe n artikel in meiner Datenbank, diese sind unterteilt in Kategorien. Also jeder Artikel hat eine bestimmte kategorie. Zusätzlich habe ich ein Timestamp-Feld, das mir anzeigt, wann der artikel geschrieben wurde.
    Nun will ich von jeder Kategorie nur alle Artikel haben die älter sind als die neusten 5 der jeweiligen Kategorie
    Um das zu erreichen fällt mir nur ein eine schleife zu baun die alle kategorieIDS enthält (6 stück) und dann pro kategrie eine select macht wie

    SELECT * FROM kategorie WHERE kategorie_id=#{id} AND public=1 ORDER BY craeted_at DESC OFFSET 5

    und das bei jeder id ....
    das geht eindeutig nicht
    hätte wer ne lösung wo ich das mit einem select mache ?

    alle ideen (solange sinnvoll) sind willkommen

    greetz
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 BloodyMary, 09.12.2008
    BloodyMary

    BloodyMary Pornophon

    Dabei seit:
    15.03.2005
    Beiträge:
    615
    Zustimmungen:
    1
    Ort:
    Bayern
    ich glaube limit ist dein Freund...
    Code:
    SELECT * FROM artikel ORDER BY craeted_at DESC LIMIT 4, 30
    Sollte dir artikel 5 - 30 anzeigen, ich weiss nicht ob eine 0 nach dem Komma dir alle artikel anzeigt...
    evtl. musst du dich noch mit den joins beschäftige... Stichwort: Left Join, right join
     
  4. foexle

    foexle Kaiser

    Dabei seit:
    02.05.2007
    Beiträge:
    1.104
    Zustimmungen:
    0
    Ort:
    Saarbrücken
    hi
    ne das ist nicht das problem ... das problem ist, das ich auf jede kategorie (teilmenge) dieses anwenden muss und nicht auf die gesamtmenge von allen kategorien....
    aber ich glaub es gibt da keine andere möglichkeit als n mal das ganze ab zu fragen ...
    ich wüsste da noch andere lösungen, aber der kunde will das nun so auch wenns lahm ist und unnötig den server belastet

    naja
    muss wohl mit ner schleife alle kategorien einzeln abfragen :(
     
  5. #4 uzumakinaruto, 14.12.2008
    uzumakinaruto

    uzumakinaruto Tripel-As

    Dabei seit:
    23.05.2008
    Beiträge:
    246
    Zustimmungen:
    0
    Ort:
    Gifhorn
    group by könnte dir dabei helfen ;)
     
  6. #5 floyd62, 16.12.2008
    floyd62

    floyd62 Routinier

    Dabei seit:
    01.05.2007
    Beiträge:
    309
    Zustimmungen:
    0
    Hi,

    vermute mal, wegen LIMIT etc, dass du mit MySQL arbeitest ... na denne:

    Du könntest versuchen, dir in einer nested Query zunächst mal eine "Rangliste" nach Alter pro Kategorie zu basteln, und mit einem weiteren SELECT dann davon alles abzuschneiden, was jeweils Rang > 5 hat. Mit einer kleinen Beispieltabelle "test" (Kategorie c, Wert x) könnte das etwa so aussehen:

    Code:
    select *
    from (
            select a.c, a.x, (select count(*) from test b where b.c = a.c and b.x > a.x) rank
            from test a
    ) c where c.rank < 5
    order by c, x desc
    ;
    
    Die Anpassung (c -> Kategorie, x -> Alter) überlasse ich dann gerne dir :)

    Gruss
     
  7. #6 FoxViper, 19.12.2008
    FoxViper

    FoxViper Goupner

    Dabei seit:
    08.07.2007
    Beiträge:
    45
    Zustimmungen:
    0
    hi,
    zeig mal deine create table Anweisung, das mit deiner Kategorie will mir noch nicht klar werden, oder arbeitest du objektorientiert?
    im Prinzip kannst du mit (max timestamp -5) in einer subselect-where klausel alles ausklammern was vom letzten Datum -5 ist.

    greets
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

SQL Problem

Die Seite wird geladen...

SQL Problem - Ähnliche Themen

  1. Virtualboxproblem

    Virtualboxproblem: Hallo Folgnedes Problem: Ich kann ohne Probleme In Debian-Sid, 64Bit und virtualbox-dkms Unixoide installieren, wenn es sich um eine...
  2. grub-pc Probleme bei upgrade

    grub-pc Probleme bei upgrade: Hallo, ich habe beim dist-upgrade folgendes Problem: ---------- Nach dieser Operation werden 0 B Plattenplatz zusätzlich benutzt. Trigger für...
  3. Problem bei apt-get upgrade (Kali 2.0)

    Problem bei apt-get upgrade (Kali 2.0): Hi, seit paar Tagen habe ich einige Probs. Dachte es sei mal an der Zeit für ein Update und nun tauchen da einige Fehler auf: Es müssen noch 0 B...
  4. Probleme mit YUM

    Probleme mit YUM: Hallo, ich habe CentOs 7 als Dualboot mit Windows 7 auf einen Dell Latitude E5510 installiert. Dies hat soweit auch alles geklappt. Leider habe...
  5. Problem mit Win-Zugriff auf SAMBA

    Problem mit Win-Zugriff auf SAMBA: Hallo rundherum, vielleicht hat jemand eine Idee... Habe jetzt schon 1 1/2 Tage damit verbraten und den Fehler nicht gefunden. Problem:...