Portal > Foren > Datenbanken, Server, Betriebssysteme und sonstige Programmiersprachen > Datenbanken > Jeweils neuesten Datensatz pro Kategorie auslesen
Antwort
 
Themen-Optionen
Alt 06.11.2006, 16:09 Nach oben    #1
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard Jeweils neuesten Datensatz pro Kategorie auslesen

Hallo,
da bin ich mal wieder .

Ich hab Probleme mit einer SQL-Abfrage. Da sieht man echt mal wieder, dass ich das Gelernte irgendwie komplett wieder vergessen hab.

Ich habe folgende Abfrage
Code:
SELECT
  threads.title AS threadtitle,
  threads.threadid,
  threads.zahl,
  forums.title AS forumtitle
FROM
  threads
LEFT JOIN
  forums
ON
  forums.forumid = threads.forumid
WHERE
  threads.forumid IN(1,2)
GROUP BY
  threads.forumid
und folgende Tabellen
Code:
-- 
-- Tabellenstruktur für Tabelle `threads`
-- 

CREATE TABLE `threads` (
  `threadid` int(8) NOT NULL auto_increment,
  `forumid` int(6) NOT NULL,
  `title` varchar(255) collate latin1_general_ci NOT NULL,
  `zahl` int(10) NOT NULL,
  PRIMARY KEY  (`threadid`)
) ENGINE=MyISAM;

-- 
-- Daten für Tabelle `threads`
-- 

INSERT INTO `threads` VALUES (1, 1, 'test titel', 10);
INSERT INTO `threads` VALUES (2, 1, 'dumdidum', 5);
INSERT INTO `threads` VALUES (3, 2, 'sicherheitsloch', 12);
INSERT INTO `threads` VALUES (4, 2, 'ganz schlimmer fehler', 1);


-- 
-- Tabellenstruktur für Tabelle `forums`
-- 

CREATE TABLE `forums` (
  `forumid` int(6) NOT NULL auto_increment,
  `title` varchar(100) collate latin1_general_ci NOT NULL,
  PRIMARY KEY  (`forumid`)
) ENGINE=MyISAM ;

-- 
-- Daten für Tabelle `forums`
-- 

INSERT INTO `forums` VALUES (1, 'allgemeines');
INSERT INTO `forums` VALUES (2, 'security');
Was ich letztlich haben will ist aus jedem Forum den neuesten Thread. Im Beispiel mal gekennzeichnet durch die Spalte "zahl". Also Thread 4 ist als erstes und Thread 3 als letztes erstellt worden.

Jut, ich erhalte im Test auch das richtige Ergebnis:
Code:
threadtitle      threadid   zahl  forumtitle
--------------------------------------------------
test titel       1          10    allgemeines
sicherheitsloch  3          12    security
(Habnu keine Lust, dass zu formatieren -)

Aber irgendwie scheint mir das doch nicht wirklich korrekt zu sein bzw. nicht fehlerfrei.
Würde mich freuen, wenn Ihr da mal korrekturlesen könntet.

Der SQL-Noob dankt.

Grüße, Ben.

// edit by Jann Hendrik: ich konnte es mir nicht verkneifen die Faulheit von Ben zu bearbeiten und habe den code-Block formatiert.

Geändert von Jann Hendrik (06.11.2006 um 16:25 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.11.2006, 16:56 Nach oben    #2
Benjamin Steininger
 
Benutzerbild von robo47
 
Registriert seit: 02.06.2005
Ort: weiher im tiefsten Odenwald
Beiträge: 1.180
Standard

wie wäre es wenn du mittels ORDER BY das ganze nach ID absteigend sortierst ?

quasi so:
Code:
SELECT
  threads.title AS threadtitle,
  threads.threadid,
  threads.zahl,
  forums.title AS forumtitle
FROM
  threads
LEFT JOIN
  forums
ON
  forums.forumid = threads.forumid
WHERE
  threads.forumid IN(1,2)
GROUP BY
  threads.forumid
ORDER BY
  threads.threadid DESC
weil die letzte threadid müsste ja quasi den neusten thread anzeigen ?

oder bin ich grad falsch.

mfg
robo47
robo47 ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.11.2006, 17:03 Nach oben    #3
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Jap,
hab ich auch gerade so gemacht. Stand da eben auf dem Schlauch.

Muss da aber gerade nochwas rumspielen, um wirklich sagen zu können, was ich eigentliche brauche ..
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.11.2006, 17:11 Nach oben    #4
Johannes Müller
 
Benutzerbild von $traight-$hoota
 
Registriert seit: 15.09.2005
Ort: Königreich Flieden
Beiträge: 521
Standard

in der thread-tabelle sollte ja auch eigentlich noch das erstell-datum abgespichert sein.
dann kannst du es danach sortieren lassen.
__________________
Weißt Bescheid - Scheiß wie weit
$traight-$hoota ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.11.2006, 17:15 Nach oben    #5
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Zitat:
Zitat von Ben Beitrag anzeigen
Was ich letztlich haben will ist aus jedem Forum den neuesten Thread. Im Beispiel mal gekennzeichnet durch die Spalte "zahl". Also Thread 4 ist als erstes und Thread 3 als letztes erstellt worden.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.11.2006, 20:33 Nach oben    #6
Benutzer
 
Registriert seit: 24.10.2006
Beiträge: 90
Standard

Wenn es der neueste Thread sein soll, dann brauchst du ja auch ein Limit oder?

MfG Byrel
Byrel ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 08.11.2006, 23:27 Nach oben    #7
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Also ich glaube, dass Ihr mein Problem nicht so ganz verstanden habt.

Ich brauche pro Kategorie (Forum) die letzten x Themen.

Das ist die Aufgaben-/Problemstellung.
Wenn ich jetzt das hier nehme

Code:
SELECT 
   thread.threadid, 
   thread.title, 
   thread.dateline, 
   forum.forumid
FROM 
   forum__thread AS thread
LEFT JOIN 
   forum__forum AS forum 
ON 
   forum.forumid = thread.forumid
WHERE 
   thread.forumid IN ( 15, 45, 46, 47, 48, 49, 50, 51 )
GROUP BY 
   thread.forumid
ORDER BY 
   thread.dateline 
DESC
LIMIT 
   0, 3
erhalte ich aber nur die letzten 3 Themen aus allen Foren. Also insgesamt 3. Das ist aber nicht das, was ich haben möchte.

Ich such und spiel schon die ganze Zeit, aber so wirklich weiter komme ich nicht.

Danke für Eure Hilfe.


[Nachtrag]
Mein Problem liegt darin, dass ich GROUP BY falsch anwende.

Weiterhin beschleicht mich das Gefühl, dass das gar nicht geht.
http://www.phpforum.de/forum/phpforu...163025712.html

Geändert von Ben (08.11.2006 um 23:41 Uhr).
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:43 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44