Versio

[SQL] Topics selecteren

Overzicht Reageren

Thijs X

Thijs X

02/04/2008 13:51:00
Quote Anchor link
Hallo allemaal,

Ik zit met een probleem, ik wil al mijn topics ophalen van de database en sorteren op 2 dingen, namelijk sticky en op op laatst geposte bericht uit een topic.
Het probleem zit het hem in het sorteren op het laatst geposte bericht.

Structuur:
-- topics --
topic_ID
gebruiker_ID
titel
bericht
datum
sticky

-- berichten --
bericht_ID
gebruiker_ID
topic_ID
bericht
datum

Iemand een idee hoe ik dit het beste kan doen?
 
PHP hulp

PHP hulp

25/05/2012 18:33:13
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Jurgen assaasas

Jurgen assaasas

02/04/2008 13:58:00
Quote Anchor link
Post eens wat code?
 
Thijs X

Thijs X

02/04/2008 14:00:00
Quote Anchor link
Het gaat eigenlijk alleen om de SQL query waar ik een probleem ondervind, datastructuur van de database is in mn beginpost al geplaatst en is de code verder ook niet relevant imo.

Edit:

Het kan natuurlijk heel vies om een veld bij topic toe te voegen en die te updaten zodra er een nieuwe post is gemaakt, maar er moet een betere en mooiere oplossing zijn.

Het is misschien beetje krom uitgelegd vandaar even een voorbeeldje:

Topicnaam <sticky>
Topicnaam <sticky>
Topicnaam : Bericht vandaag 13:23
Topicnaam : Bericht vandaag 12:54
Topicnaam : Bericht gister 22:34
Topicnaam : Bericht Zondag 12:34
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
Derk nvt

Derk nvt

02/04/2008 14:38:00
Quote Anchor link
select * from topics as t, berichten as b
where t.topic_ID=b.topicID
order by t.sticky, b.datum ASC

Nu krijg je alleen ook alle posts terug... Denk niet dat dat de bedoeling is. Dan moet je een left of een right join oid gebruiken, maar daar heb ik geen verstand van :x
 
Jurgen assaasas

Jurgen assaasas

02/04/2008 14:41:00
Quote Anchor link
Ik denk dat je een tabel extra nodig hebt voor het gelezen hebben van topics. Een tabel waar je 4 velden hebt, nl. read_id, topic_id, user_id, read.

Als een gebruiker een nieuw bericht post wordt bij alle users in de tabel de "read" op 0 gezet. bij het uitlezen controleer je gewoon of de huidige gebruiker het al gelezen heeft door een SELECT query op deze tabel los te laten.
 
Thijs X

Thijs X

02/04/2008 14:44:00
Quote Anchor link
@ Derk,
Ja zoiets idd maar met die JOINS heb ik zelf ook altijd problemen vandaar dat ik hier een topic aanmaak.

@Jurgen,
Dat is niet precies wat ik bedoel, ik wil niet een extra tabel aanmaken.


Wacht wel tot Frank online komt ;)
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 
Joren de Wit
Beheerder

Joren de Wit

02/04/2008 14:58:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
    t.topic_ID,
    t.gebruiker_ID,
    t.titel,
    (
        SELECT
            datum
        FROM
            berichten
        WHERE
            topic_ID = t.topic_ID
        ORDER BY
            datum DESC
        LIMIT 1
    ) AS datumLaatsteBericht
FROM
    topics AS t
ORDER BY
    sticky ASC,
    datumLaatsteBericht DESC

Zoiets?
 
Thijs X

Thijs X

02/04/2008 15:31:00
Quote Anchor link
@ Blanche,
Ja heel erg bedankt! :D
Gewijzigd op 01/01/1970 01:00:00 door Thijs X
 



Overzicht Reageren