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 diesen Ratgeber 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:
    315
    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 in dieser Kategorie etwas passendes.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

SQL Problem

Die Seite wird geladen...

SQL Problem - Ähnliche Themen

  1. Bootproblem

    Bootproblem: Hallo Ein PC (i686 mit Debian unstable, nox) hat Bootprobleme (will heißen ist erfolgt keine Grafikausgabe. was ich bisher gemacht habe: HDD an...
  2. Crontab und Scripts - Problem

    Crontab und Scripts - Problem: Hallo Zusammen Ich habe ein Script welches mittels Cronjob ausgeführt werden soll. Gemäss Log wird es auch ausgeführt, jedoch passiert nichts:...
  3. Problem bei der installation einer Sun Netzwerkkarte

    Problem bei der installation einer Sun Netzwerkkarte: Guten Morgen zusammen, beim installieren einer zusätzlichen Netzwerkkarte habe ich ein Problem. Die Karte wird nicht automatisch installiert. Es...
  4. Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe

    Problem bei der Vergabe von Sciherheitsinformationen auf eine Freiagbe: Liebe Community, zurzeit arbeite ich an eine Active Directory Domäne die mittels Samba läuft. Dazu habe ich einen AD DC auf Debian 8.7 mit Samba...
  5. 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....