Toon posts:

[SQL] lastige statement

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb al gezocht op het forum en ik kon niets hierover vinden en ik kom er niet uit. Ik wil het aantal nieuwe berichten in forum discussies bepalen, sinds de bezoeker er voor het laatst geweest is.

Ik heb de volgende tabellen:

forum_bericht
------------------
ID int(10) auto_increment
Verband int(10)
Lid int(10)
Datum datetime
Discussie int(10)
Bericht text
Moderatie tinyint(3)
Moderatie_Lid int(10)
Moderatie_Notitie
Gewijzigd_Lid int(10)
Gewijzigd_Datum datetime

laatstbezocht
------------------
Lid int(10)
Onderdeel enum('gastenboek', 'forum', 'agenda', 'peiling', 'login', 'betaforum')
ID1 int(10)
ID2 int(10)
ID3 int(10)
Datum timestamp(14)

forum_discussie
------------------
ID int(10) auto_increment
Lid int(10)
Datum timestamp(14)
Titel tinytext
Moderatie tinyint(3)
Moderatie_Lid int(10)
Moderatie_Notitie tinytext
Verband int(10)

Ik wil ongeveer dit, alleen dan ook met resultaten waarbij er nog geen entrie in de tabel laatstbezocht bestaat:

SELECT MAX(forum_bericht.Datum) AS laatsteberichtdatum, forum_discussie.Titel, COUNT( * ) AS aantal
FROM laatstbezocht, forum_bericht, forum_discussie
WHERE forum_bericht.Datum > laatstbezocht.Datum AND forum_bericht.Discussie = forum_discussie.ID AND laatstbezocht.ID1 =501 AND laatstbezocht.ID2 = forum_discussie.ID AND laatstbezocht.Onderdeel = \'forum\' AND laatstbezocht.Lid = 2878
GROUP BY forum_discussie.ID
ORDER BY MAX(forum_bericht.Datum)

Wie heeft een goed idee om dit efficient op te lossen?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

Zoek eens op wat outer joins zijn. :)

Edit: P&W FAQ - SQL dus. :)

[ Voor 52% gewijzigd door NMe op 31-01-2006 22:32 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Wat je beste kan doen is je tabellen openen met VIEW functie van MSDE manager of SQL Configuration Manager, en dan gewenste velden met elkaar koppelen en ID als aantal zetten ipv van alle velden wat je deed. Query statement wordt dan automatisch voor je gemaakt.

Tabellen openen met ACCESS 2003 of andere versies is ook mogelijk maar dan complexer.

Ik wil wel een QUERY Statement voor je maken als je even je database met alle tabellen beschikbaar stelt ;).

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 11-04 17:49

NMe

Quia Ego Sic Dico.

En waar zie je aan dat het hier om Access of MS SQL Server gaat? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Beetje te weinig geslapen :z

ik zag in de titel SQL staan dus ik d8 dat :P

Hier gaat dus over My SQL(php)?

Kleine opmerking over je Query Statement: Je hebt alle velden als aantal gezet, dat moet volgens mij niet!

Volgens mij moet je ID als aantal zetten en andere velden als een hulpmiddel om te kijken welke velden in verschillende tabellen bij elkaar horen(dus HIDDEN). Je hoeft tenminste maar 1 resultaat over hebben ipv meerdere resultaten als je alle velden als AANTAL zet.

correct me if i'm wrong ;)

[ Voor 74% gewijzigd door Verwijderd op 31-01-2006 23:12 ]


Verwijderd

Topicstarter
Heel erg bedankt voor alle tips, hier ga ik in ieder geval al mee puzzelen, ik hoop dat ik er nu uit kom. Ik doe in ieder geval mijn best. Heel erg bedankt alvast.
Pagina: 1