Toon posts:

[SQL/ASP] Lijst met maanden

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben al een tijdje aan het rondkijken op het net en hier op tweakers, maar ik kom er maar niet uit.

SITUATIE:
Ik heb een nieuws tabel in een access db. de datum van het nieuwsartikel wordt alsvolgt opgeslagen: dd-mm-jjjj

DOEL:
Ik heb twee doelen:
  • een lijst genereren met alle maanden die aanwezig zijn in de tabel
  • een overzicht van alle artikelen van een bepaalde maand.
OPLOSSING:
  • voor het eerste doel heb ik nog geen oplossing. Ik heb alle geprobeerd met GROUP BY en DISTINCT maar ik kom er maar niet uit.
  • voor het 2e doel heb ik al wel een oplossing:
    code:
    1
    
    SELECT * FROM Nieuws WHERE MONTH( datum ) = MONTH( DATE() ) AND YEAR( datum ) = YEAR( DATE() )
Nu is mijn vraag of iemand ervaring of een oplossing heeft voor doel 1 en of mijn SQL code nog beter kan bij doel 2.

In iedergeval bedankt voor je antwoord

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

code:
1
select distinct month(date) from nieuws

Who is John Galt?


Verwijderd

Topicstarter
justmental schreef op 01 maart 2004 @ 20:53:
code:
1
select distinct month(date) from nieuws
Dit werkt wel, dank je. Maar nu zit ik nog met het jaartal. Ik krijg nu alle maanden van alle jaren. Wat ik eigenlijk wil is dat je het jaartal direct meeneemt. Dus alsvolgt:

je hebt de volgende data:

01-02-2003
13-02-2004
08-02-2003
18-02-2003
etc ..

Dan wil ik het volgende lijstje zien:

februari 2003
februari 2004

[ Voor 46% gewijzigd door Verwijderd op 01-03-2004 21:05 ]


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

Annie

amateur megalomaan

Had je deze al geprobeerd?
code:
1
select distinct month(date), year(date) from nieuws

Today's subliminal thought is:


Verwijderd

Topicstarter
Annie schreef op 01 maart 2004 @ 22:02:
Had je deze al geprobeerd?
code:
1
select distinct month(date), year(date) from nieuws
Ok, de code werkt nu al, maar nu wil ik het sorteren zodat de maanden op volgorde staan. en dit wil niet met onderstaande code:
code:
1
SELECT DISTINCT MONTH(datum) AS maand, YEAR(datum) AS jaar FROM Nieuws ORDER BY jaar DESC, maand ASC
Heeft iemand toevallig suggesties?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 22:24

gorgi_19

Kruimeltjes zijn weer op :9

Sorteren op datum?; wat jij doet wil je sowieso niet, want dan komt december voor maart.

[ Voor 67% gewijzigd door gorgi_19 op 02-03-2004 11:40 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 02 maart 2004 @ 11:40:
Sorteren op datum?; wat jij doet wil je sowieso niet, want dan komt december voor maart.
jawel hoor ik heb nu de volgende SQL query:
code:
1
SELECT DISTINCT MONTH( datum ) AS maand, YEAR(datum) AS jaar FROM Nieuws
Dit werkt helemaal en ik krijg het volgende eruit:

- januari 2004
- februari 2004
- juli 2003
- augustus 2003
- september 2003
- oktober 2003
- november 2003
- december 2003

Ik zet dus pas bij het schrijven de maandnummers om naar maandnamen met MonthName.

Ik er echt geen mogelijkheid om dit te doen?

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

Annie

amateur megalomaan

Verwijderd schreef op 02 maart 2004 @ 11:52:
Ik er echt geen mogelijkheid om dit te doen?
Goed lezen :X

[ Voor 3% gewijzigd door Annie op 02-03-2004 12:05 ]

Today's subliminal thought is:


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 23:30

NMe

Quia Ego Sic Dico.

Als datum het type date heeft in de database, waarom sorteer je dan niet gewoon op het veld datum?

'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

Topicstarter
NMe84 schreef op 02 maart 2004 @ 12:12:
Als datum het type date heeft in de database, waarom sorteer je dan niet gewoon op het veld datum?
Omdat er dan de volgende error komt:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] ORDER BY clause (datum) conflicts with DISTINCT.

Waarschijnlijk wil het dus niet ..

Verwijderd

Wij doen een dubbele Query

Eerst de jaren:

SELECT DISTINCT Year(PlaatsenVanaf) as JaarTal FROM Nieuws ORDER BY Year(PlaatsenVanaf) DESC;

Hiermee loop door een tweede query:

SELECT DISTINCT Month(PlaatsenVanaf) as MaandTal FROM Nieuws WHERE Year(PlaatsenVanaf) = " & rs("JaarTal") & " ORDER BY Month(PlaatsenVanaf) DESC


Resultaat kun je hier zien :
http://www.bhznet.nl/nieuws-archief.asp

  • syllaz
  • Registratie: Mei 2002
  • Laatst online: 20-04 17:01
Waarom zou je een dubbele query gebruiken als je de "Group By" functie hebt?

http://www.w3schools.com/SQL/sql_groupby.asp

Verwijderd

Topicstarter
Kijk zo komen we nog ergens. Je hebt me geholpen tot de oplossing, al was jou antwoord niet de oplossing.

Ik wou dus gewoon 1 lijst met alle maanden+jaren erin en die sorteren van nieuw naar oud. Dus zo:

- maart 2004
- feb 2004
- jan 2004
- dec 2003

etc ..

mijn SQL code is alsvolgt:
code:
1
SELECT DISTINCT MONTH( datum ) AS maand, YEAR(datum) AS jaar FROM Nieuws ORDER BY YEAR(datum) DESC, MONTH( datum ) DESC
Pagina: 1