Ik zit met het volgende probleem.

ik ben bezig met een boekingsysteem. Daar heb ik 2 tabelen:
een tabel met de gegevens van wie het en opmerkingen:
boek_id | naam | opmerkingen

en een tabel met de ruimtes en tijden
id | boek_id | datum | ruimte(1,2,3) | dagdeel (1,2,3,4)

hoe ga ik nu met een query kijken op welke datums in de komende 3 maanden geen ruimte is om te boeken. dus dat die hele dag op elk dagdeel alle ruimtes bezet zijn??

SELECT 
   datum 
FROM 
   ruimtes 
WHERE 
   datum 
BETWEEN 
   CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 MONTHS)


Hier heb je iig al alle ruimtes van de komende 3 maanden. Maar ik zit nog even te kijken naar hoe ik dat met de bezet tijden moet gaan doen.
hier kan ik al wel wat mee. ik zal zelf ook nog even gaan kijken hoe dat makkelijk kan
Ik denk dat ik al wel wat weet, moet alleen nog bedenken hoe om te zetten naar een query.

-> Het werkt met een SUBQUERY, maar dat moet geen probleem zijn. Ervanuit gaande dat elke dag 4 mogelijke intekentijden heeft, kan je met een COUNT query bepalen welke ruimtes vol zijn, door het aantal keren dat een op een dag een ruimte is gereserveerd.
Wanneer COUNT(datum) (gegroepeerd op datum) 12 is, dan is alles volgeboekt op die dag. Dan moet je alleen nog die datum door de query halen die ik hiervoor noemde.
Ik kom hierop terug.

SELECT 
   COUNT(datum) AS aantal,
   datum
FROM
   ruimtes
WHERE
   datum IN
   (SELECT 
      datum 
    FROM 
      ruimtes 
    WHERE 
      datum 
    BETWEEN 
      CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 MONTHS))
AND aantal = 12
GROUP BY datum


Dit is een hersenspinsel van me voor dit probleem, ik heb het niet getest. Het 1e deel werkt sowiezo wel, de count en de group by icm de subquery zal wel werken, maar of die "AND aantal = 12" werkt durf ik niet te zeggen.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MONTHS))
AND aantal = 12
GROUP BY datum at line 15

helaas
Als je "AND aantal=12" eens weghaald, wat doet die dan? Dan geeft die denk ik van de komende 3 maanden alle aantallen uit je ruimtereserveringen? (de count)

Volgens mij moet het namelijk zonder die regel wel werken, maar dan heb je nog niet in je query bepaald of de ruimtes vol zijn.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MONTHS))

GROUP BY datum LIMIT 0, 30' at line 15

ook dan werkt het niet
en als je de S achter MONTHS weghaald werkt het wel, maar dan zit je nog met de aantallen. Dit kan je eventueel in PHP controleren, maar het mooiste zou zijn als we dit voor elkaar kregen in SQL.
dan werkt de query wel. maar hij geeft geen resultaten weer. terwijl die er wel zijn
@Donhertog

Ik heb net even jou tabelletje nagebouwd, ik krijg wel resultaten. Deze query gebruikte ik:

SELECT COUNT( datum ) AS aantal, datum
FROM ruimtes
WHERE datum
IN (

SELECT datum
FROM ruimtes
WHERE datum
BETWEEN CURDATE( )
AND DATE_ADD( CURDATE( ) , INTERVAL 3
MONTH )
)
GROUP BY datum

Reageren