php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.07.2004, 09:30  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard abfrage sortierung aber wie

hallo leute!

bin dabei ein kleines forum zu programmieren und hänge etwas bei einer abfrage!

eine kategorie auswähle wie z.b. hier mysql oder anfänger dann lasse ich mir mit dieser abfrage:

$res2= MYSQL_QUERY("select * from fo_threads where thread_fid=$foren_id ORDER BY thread_created desc");

alle thread ausgeben sortiert nach ihrerm erstellungsdatum! das funktioniert alles auch wunderbar nur ist es für ein forum ja nicht korrekt! ich will nämlich sortiert haben nach dem kriterium welcher thread als letztes eine antwort bekommen hat (wie das so üblich ist)

meine tabelle mit den antworten drin sieht so aus:
ans_id --> die ID ist wohl klar
ans_tid --> die thread id (zu welchem thread die antwort gehört)
ans_fid --> foren id (zu welchem forum sie gehört (unwichtig hier)
ans_user --> wer die antwort erstellt hat
ans_topic --> überschrift
ans_text --> text der antwort
ans_created --> timestamp des erstellungszeitpunktes (wird wohl gebraucht)

hoffe es kann mir jemand helfen weil ich hier absolut nimmer durchblicke!

greetz Fraylman
Fraylman ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.07.2004, 09:49  
Gast
 
Beiträge: n/a
Standard

dann nimm doch noch ein feld "last_reply" in dem der timestamp der letzten antwort steht und sortiere danach
du musst dann nur bei jedem beitrag den wert time() darein speichern
  Mit Zitat antworten
Alt 16.07.2004, 10:05  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Müsste mit folgender Abfrage gehen (ungetestet):
Code:
SELECT t.* 
    FROM fo_threads t
    INNER JOIN fo_answers a on t.id = a.ans_fid
    ORDER BY a.ans_created DESC
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 16.07.2004, 10:21  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard

danke schonmal für eure hilfe!

folgende fehlermeldung erhalte ich:
Unknown table 'thread' in on clause
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\projekte\djkneu\forum_kategorie.ph p on line 42

das ist der aufbau der 2 tabellen die benötigt werden! hoffe es hilft euch!
Code:
#
# Tabellenstruktur für Tabelle `fo_answers`
#

CREATE TABLE `fo_answers` (
  `ans_id` int(11) NOT NULL auto_increment,
  `ans_tid` int(11) NOT NULL default '0',
  `ans_fid` int(11) NOT NULL default '0',
  `ans_user` int(12) NOT NULL default '0',
  `ans_topic` varchar(255) NOT NULL default '',
  `ans_text` text NOT NULL,
  `ans_created` int(12) NOT NULL default '0',
  PRIMARY KEY  (`ans_id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;

# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `fo_threads`
#

CREATE TABLE `fo_threads` (
  `thread_id` int(11) NOT NULL auto_increment,
  `thread_fid` int(11) NOT NULL default '0',
  `thread_headid` int(11) NOT NULL default '0',
  `thread_topic` varchar(255) NOT NULL default '',
  `thread_text` text NOT NULL,
  `thread_created` int(12) NOT NULL default '0',
  `thread_user` int(12) NOT NULL default '0',
  PRIMARY KEY  (`thread_id`)
) TYPE=MyISAM AUTO_INCREMENT=11 ;
Fraylman ist offline   Mit Zitat antworten
Alt 16.07.2004, 10:46  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Wie lautet denn deine Abfrage?
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 16.07.2004, 11:02  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard

na ich hab deine benutzt
Fraylman ist offline   Mit Zitat antworten
Alt 16.07.2004, 11:13  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Die musst du natürlich an deine Tabellen anpassen:
Code:
...
INNER JOIN fo_answers a on t.thread_id = a.ans_tid 
...
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 16.07.2004, 11:33  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard

jo thx fehlermeldung ist weg...

... aber :

jetzt werden nur noch solche einträge angezeigt auf die schon einer geantwortet hat und diese jeweils doppelt

komisch eigentlich
Fraylman ist offline   Mit Zitat antworten
Alt 16.07.2004, 12:47  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Jetzt wirds etwas komplizierter. Es ist zwar kein Problem, mit "distinct" die doppelten Einträge wegzubringen und mit "left Join" auch diejenigen ohne Antworten zu holen. Nur stimmt dann die Sortierung wieder nicht mehr. Ich hab mal etwas rumgespielt, und irgendwie in dieser Richtung müsste es gehen:
Code:
SELECT  t.*, if(max(a.ans_created) > t.thread_created, max(a.ans_created), t.thread_created) datum
    FROM fo_threads t
    LEFT JOIN fo_answers a on a.ans_id = t.thread_id
    GROUP BY t.thread_id
    ORDER BY datum DESC
Diese Abfrage bringt dir zwar ein Attribut mehr (datum), aber das kannst du ja ignorieren. Möglicherweise könnte man das Kriterium auch direkt in der ORDER BY-Klausel definieren, aber das hab ich nicht ausprobiert.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Alt 16.07.2004, 14:05  
Erfahrener Benutzer
 
Registriert seit: 08.08.2003
Beiträge: 111
Fraylman
Standard

hmm jo so halb!

er sortiert jetzt wieder wie nach dem erstellungsdatum des threads und es sind auch alle da und keine doppelten aber das mit den antworten funzt immer noch nicht
Fraylman ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
MYSQL Abfrage // Sortierung geht nicht... PHP Tipps 2006 16 19.04.2006 22:25
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
[Erledigt] Abfrage zur Sortierung der Datensätze Datenbanken 2 14.08.2005 14:33
Abfrage in array? BartTheDevil89 Datenbanken 5 10.05.2005 14:21
MySQL abfrage mit berechneter Sortierung Dragon26mFR Datenbanken 5 08.05.2005 14:01
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
Abfrage mit Sortierung Problem ! PHP Tipps 2005 2 08.01.2005 14:20
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Gleiche Abfrage, unterschiedliche sortierung juhuwoorps Datenbanken 2 05.09.2004 00:51
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
[Erledigt] Fehlerhafte Abfrage ? Datenbanken 15 24.06.2004 17:10
[Erledigt] mysql Abfrage Datenbanken 5 18.06.2004 14:16


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:14 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.