[ASP/SQL] 2 Criteria in 1 query

Pagina: 1
Acties:

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Topicstarter
Alle logica schijnt mij vandaag te ontgaan...

Ik heb een tabel waarin nieuwsitems opgeslagen worden.
Uit deze tabel wil ik voor de frontpage van een website alle nieuwsberichten van de huidige dag laten zien, zonder limiet.
Wanneer dat er echter minder zijn dan 3, wil ik dat opvullen met oudere berichten.

Dus, wanneer er vandaag 2 berichten zijn geplaatst en gisteren één, wil ik drie headlines:

- Vandaag
- Vandaag
- Gisteren

Maar ook wanneer er vandaag niets geplaatst is, wil ik drie headlines laten zien:

- Gisteren
- Eergisteren
- Eergisteren

Maar wanneer er vandaag veel gebeurd is en er worden 6 nieuwsberichten geplaatst, wil ik deze ook allemaal tonen.

Ik heb de volgende query:
ASP:
1
Set Nieuws = ExecuteQuery("SELECT TOP 3 * FROM nieuws ORDER BY created_datetime DESC")


Maar zo zie ik wanneer er de huidige dag 6 berichten zijn geplaatst, er maar 3.

Weet iemand hoe ik dit kan oplossen, en liefst in één query?

Edit: ik heb nu het volgende, dat werkt wel. Kan dit gemakkelijker?


ASP:
1
2
3
4
5
6
7
8
Set Aantal = ExecuteQuery("SELECT Count(NieuwsID) as antl FROM nieuws WHERE created_datetime LIKE '" & Left(Cstr(Date), 10) & "%'")
lAantal = Clng(Aantal("antl")) 'aantal records voor vandaag tellen

If lAantal <= 3 Then
    Set Nieuws = ExecuteQuery("SELECT TOP 3 * FROM nieuws ORDER BY created_datetime DESC")
Else
    Set Nieuws = ExecuteQuery("SELECT * FROM nieuws WHERE created_datetime LIKE '" & Left(Cstr(Date), 10) & "%'" & " ORDER BY created_datetime DESC")
End If

[ Voor 44% gewijzigd door CodeCaster op 14-10-2005 11:08 ]

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Kan je niet alles van de huidige dag selecteren + de top drie van de overige dagen (union)? In je code kan je bij het doorlopen van de resultset wel een tellertje laten meelopen en evt. uit de loop springen.

Maar of dat makkelijker is? Mja...

[ Voor 9% gewijzigd door Annie op 14-10-2005 11:59 ]

Today's subliminal thought is:


  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

Topicstarter
Ik weet het niet, dan moet ik bij ieder record zelf weer de datum gaam controleren... en nog een teller bijhouden ook ja.

Ik denk dat de oplossing die ik in de edit gepost heb toch het makkelijkst is, toch bedankt. ;)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...