WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   [SQL] ORDER Problem (http://www.wcm.at/forum/showthread.php?t=149713)

T.dot 08.11.2004 20:34

Denke nicht, dass das geht. Zumindest wüsste ich nicht wie, da ich ned glaub das sql irgendwelche if syntax-dinger für ausgelesen werte unterstützt. Sowas mach ich dann meistens per PHP, also Werte auslesen und nachschauen ob vorhanden/nicht und dann halt irgendwas anderes machen...

Du könntest aber auf die Lösung umsteigen, dass du einfach bereits das erste Post in die Posttabelle reinspeicherst, wüsste eigentlich nicht, was dagegen sprechen würd. Außer du hast leere Themen in deinem Forum?

Einziges Problem das auftritt ist das Auslesen des Threattitels, falls dieses dem Titel des ersten Posts entsprechen soll...

ich würde (auch wenn jetz ne redundanz dabei is) das ganze so aufbauen:

Threads:
- Thread_ID -> eindeutige nummer fürn thread
- (Section_ID -> zu welcher Section gehört dieser Thread, je nachdem ob du damit arbeitest)
- Thread_Titel -> um das greade erwähnte Problem zu übergehen: Threadtitel wird im ersten Post und in Threadtabelle gespeichert
- Hits -> Anzahl der Zugriffe

Posts:
- Post_ID -> eindeutige PostNummer
- Thread_ID -> zu welchen Thread gehört das Post
- User_ID -> wer hats geschrieben
- Datum -> wann geschrieben
- Titel -> Posttitel (falls jedes Post einen Titel haben darf, ala wcm forum)
- Beitrag -> der Text zum Post

hab jetz mal nur die wichtigsten Felder genommen, lässt sich wohl ewig weiterführen...

mfg Thomas

snowman 09.11.2004 09:02

Zitat:

Original geschrieben von Potassium
hi danke erstmal.
@snowman: das prob ist ich möchte das ganze so "dynamisch" wie möglich halten. d.h. ich möchte keine endlose löschprozedur für posts sondern einfach den entsprechenden eintrag entfernen. und dann wäre die zeit ja wieder falsch.

verstehe das beschriebene problem nicht, weil löschen wirst du ja hoffentlich über eine individuelle id.

gruss,
snowman

T.dot 09.11.2004 11:44

ich glaubs zu verstehen:

angenommen du aktualisierst immer das datum wenn ein neues post hinzugefügt wird, dann musst du auch wenn du ein post löscht das datum aktualisieren, falls das post das letzte neue post ist.

das bedeutet wieder diverse abfragen in php und update in sql, etc.

ich denke das potassium das vermeiden will und möglichst alles über einfach sql-statements lösen möchte.

mfg Thomas :)

Potassium 09.11.2004 13:11

Zitat:

Original geschrieben von T.dot
ich glaubs zu verstehen:

angenommen du aktualisierst immer das datum wenn ein neues post hinzugefügt wird, dann musst du auch wenn du ein post löscht das datum aktualisieren, falls das post das letzte neue post ist.

das bedeutet wieder diverse abfragen in php und update in sql, etc.

ich denke das potassium das vermeiden will und möglichst alles über einfach sql-statements lösen möchte.

mfg Thomas :)

:ja::ja::ja::ja::ja:
ganz genau :)

Potassium 09.11.2004 23:05

*push*
hat keiner eine idee?
es ist wirklich wichtig.

T.dot 10.11.2004 22:08

los googlos helpos immros (google hilft immer auf neuspanisch)

zieh dir mal das rein:
http://dev.mysql.com/doc/mysql/en/Co...functions.html

wennst da sowas wie

IFNULL(Max(PostDatum),ThreadDatum) machst könnts fast funktionieren - aber garantieren kann ich nix...

:D

mfg Thomas

Potassium 10.11.2004 22:57

Code:

ORDER BY (IF(P.Post_Time IS NULL,Topic_Date,Post_Time)) DESC
und er sortiet trotzdem immer nach Topic_Date :heul:
das gibts doch nicht, dass sowas nie jemand braucht.

T.dot 11.11.2004 20:18

wie schaffst du das?

probiers mal mit dem:

SELECT tblThread.*,max(tblPost.PostDatum),
ifnull(max(tblPost.PostDatum),tblThread.ThreadDatu m) as DeppadesFeld
FROM tblThread
LEFT JOIN tblPost
ON tblThread.TH_ID=tblPost.TH_ID
GROUP BY tblThread.TH_ID
ORDER BY DeppadesFeld DESC


das funktioniert bei mir wonderbra... :confused:

Potassium 11.11.2004 20:52

boah du bist genial :eek:
VIIIIIIIIIIIEEEEEEEEEELLLLLEN DANK :bier:
hast was gut bei mir :)

kommst aufs forumstreffen?

T.dot 11.11.2004 20:57

ne, bin anderweitig behindert :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag