Toon posts:

[SQL] Probleem opstellen query

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi!

Ik ben bezig met een activiteiten-kalender. En nu heb ik een probleem om "de eerstvolgende activiteitendag" uit de dbase te halen.

De tabel waar het om gaat, is als volgt:

activiteit
 a_id
 a_timestamp
 a_... (overbodig nu)

Wat ik wil is dat "alle" activiteiten van de eerstkomende dag (met een activiteit op die dag) neergehaald worden uit de dbase.

Kan dit in 1 query?

Ik heb het nu zo:
code:
1
2
3
eerste query: SELECT a_timestamp FROM activiteit WHERE a_timestamp > NOW() LIMIT 1

tweede query: SELECT a_timestamp, a_... FROM activiteit WHERE a_timestamp < middernacht(timestamp_eersteQuery) AND a_timestamp > middernachts(timestamp_eersteQuery - 1 dag)

Het probleem zit hem erin dat ik niet weet hoeveel activiteiten er dan zijn.

Iemand een idee of dit uberhaupt wel kan in 1 query? :+ Of is mijn structuur niet goed genormaliseerd? (bijv. een extra tabel aanmaken met het het aantal activiteiten per dag?)

EDIT: MySQL

  • Karlok[JY-616]
  • Registratie: Februari 2002
  • Laatst online: 26-02 21:53
Je wilt ALLE activiteiten op een dag, if any, maar je eerste query is
code:
1
SELECT a_timestamp FROM activiteit LIMIT 1

Dan krijg je als het goed is er maar 1, ook al heb je er 5000, wat is timestamp eigenlijk? datum?

Vleuten 4x430wp Oost Schuin dak 25°, 5x430wp Zuid plat dak 13°


Verwijderd

Topicstarter
Op dinsdag 23 juli 2002 12:35 schreef Karlok[JY-616] het volgende:
Je wilt ALLE activiteiten op een dag, if any, maar je eerste query is
code:
1
SELECT a_timestamp FROM activiteit LIMIT 1

Dan krijg je als het goed is er maar 1, ook al heb je er 5000, wat is timestamp eigenlijk? datum?
oops, vergeten te typen :)

+ WHERE a_timestamp > NOW()

Dat is een datum ja: "200207242001"

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Heb je in MySQL geen functie om precies 1 dag op te tellen bij een gegeven Datum ?
code:
1
2
3
SELECT *
FROM tblActiviteiten
WHERE Time_stamp = DateAdd(Now(), 1dag)

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

Topicstarter
Op dinsdag 23 juli 2002 12:39 schreef -Avalanche- het volgende:
Heb je in MySQL geen functie om precies 1 dag op te tellen bij een gegeven Datum ?
code:
1
2
3
SELECT *
FROM tblActiviteiten
WHERE Time_stamp = [i]DateAdd(Now(), 1dag)[/i]
Ja wel (DATE_ADD als ik me niet vergis), maar... bij welke datum ga ik dat optellen?

De eerste activiteiten-dag kan morgen, volgende week, volgende maand, ... zijn?

Of heb je het over mijn hypotetische middernacht() functie? Ja, dat doe ik uiteraard met DATE_ADD (en aanverwanten) functies.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Hmm:

SELECT * FROM activiteit
WHERE DATE_FORMAT(a_timestamp, '%Y-%m-%d') = DATE_ADD(CURDATE(), INTERVAL 1 DAY)

zoiets? of mis ik iets?

[oh ik snap het nu, de volgende dag hoeft niet morgen te zijn...check]

Verwijderd

Topicstarter
Op dinsdag 23 juli 2002 12:42 schreef Zoijar het volgende:
Hmm:

SELECT * FROM activiteit
WHERE DATE_FORMAT(a_timestamp, '%Y-%m-%d') = DATE_ADD(CURDATE(), INTERVAL 1 DAY)

zoiets? of mis ik iets?
Dat zou de perfecte query zijn, als ik 100% garantie heb dat er morgen activiteiten zijn.

EDIT:

Stel dit zijn de activiteiten:

· 2002-08-10 15:00 feestje bij kristof
· 2002-08-10 18:00 opening kantine
· 2002-08-10 23:00 receptie AHVJLK
· 2002-08-12 08:00 ....

Nu wil ik dat, ongeacht de huidige datum (natuurlijk op voorwaarde dat huidige datum <= 2002-08-10), dat ik alle activiteiten op 2002-08-10 ineens kan neerhalen, en dit in 1 query, en niet in 2 queries waarbij ik eerst de datum 2002-08-10 ga neerhalen, en dan in een tweede query alle activ. op die dag.

  • Zoijar
  • Registratie: September 2001
  • Niet online

Zoijar

Because he doesn't row...

Volgens mij kan dat niet. Je structuur is wel goed, maar het probleem is dat je in mysql geen subqueries hebt.

Verwijderd

Topicstarter
Op dinsdag 23 juli 2002 13:08 schreef Zoijar het volgende:
Volgens mij kan dat niet. Je structuur is wel goed, maar het probleem is dat je in mysql geen subqueries hebt.
Spijtig, ik dacht het al :'(

Tweede vraag dan... Wat is het snelste/beste:

· 2 queries
· een extra tabel waar het aantal activiteiten per dag staan?

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Op dinsdag 23 juli 2002 13:16 schreef DiEana het volgende:

[..]

Spijtig, ik dacht het al :'(

Tweede vraag dan... Wat is het snelste/beste:

· 2 queries
· een extra tabel waar het aantal activiteiten per dag staan?
is dit hier een quiz of zo :)

aantal -> dat kun je toch met een count doen in je query ?

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:02

gorgi_19

Kruimeltjes zijn weer op :9

Op dinsdag 23 juli 2002 13:16 schreef DiEana het volgende:

[..]

Spijtig, ik dacht het al :'(

Tweede vraag dan... Wat is het snelste/beste:

· 2 queries
· een extra tabel waar het aantal activiteiten per dag staan?
Snelste: extra tabel (minder complexe query)
Beste: Afhankelijk van je complexiteit van je query en
de hoeveelheid records.

Om er achter te komen: stress testen.

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1