SQL Problem

Diskutiere SQL Problem im SQL und Datenbanken Forum im Bereich Netzwerke & Serverdienste; 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...

  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:
    314
    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. Netzwerkproblem ? , wo ud wie suchen

    Netzwerkproblem ? , wo ud wie suchen: Hallo Folgende Problem: Testserver ist i686 Debian-unstable , auf dem läuft primär der apt-proxy apt-cahcer ng. Zugriff im Moment nur per ssh....
  2. Verständnisproblem Samba / LDAP

    Verständnisproblem Samba / LDAP: Hallo zusammen! Ich habe unter Ubuntu 16.04 einen LDAP und Samba Server aufgesetzt. Diese scheinen auch ordnungsgemäß zu funktionieren, sodaß ich...
  3. nginx+php-fpm problem

    nginx+php-fpm problem: Moin, ich hab hier gerade ein Problem und keine Idee mehr woran es liegt. Ich muss wie schon in der Überschrift erwähnt nginx dazu bringen php...
  4. Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen

    Problem mit Windows auf Ordner auf dem Linuxsystem zuzugreifen: Ich mache gerade meine ersten Schritte mit Linux und würde gerne auf Dateien meines Linuxsystems auch mit Windows zugreifen, ich bin am...
  5. Virtualboxproblem

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