Onnistuukohan suoraan sql-kyselyllä, eli taulussa on vaikka seuraavat rivit:
tapahtuma, alkuaika, loppuaika
========= ======== =========
tapahtuma1, 10.00, 12.00
tapahtuma2, 11.30, 12.30
tapahtuma3, 13.00, 14.00
Haluttu tulos:
tapahtuma, alkuaika, loppuaika
========= ======== =========
tapahtuma1, 10.00, 12.30
tapahtuma3, 13.00, 14.00
Tapahtumien nimillä ei väliä, ne voidaan ajatella tässä kohtaa vaikka id:ksi.
tapahtuma, alkuaika, loppuaika
========= ======== =========
tapahtuma1, 10.00, 12.00
tapahtuma2, 11.30, 12.30
tapahtuma3, 13.00, 14.00
Haluttu tulos:
tapahtuma, alkuaika, loppuaika
========= ======== =========
tapahtuma1, 10.00, 12.30
tapahtuma3, 13.00, 14.00
Tapahtumien nimillä ei väliä, ne voidaan ajatella tässä kohtaa vaikka id:ksi.
Vastaukset 6
Vanhimmat
Onnistuu.
Ei onnistu.
Suoraan mysqli-queryllä tehtävä tuntuu hankalalta ellei jopa mahdottomalta, Mikäli tarvetta on paljon, niin kannattaa rakennella oma nettikalenteri.
https://tuuletus.net/kalenteri.php
Yllä mainittu on esimerkki miten varauskalenterin voi laittaa julki. Esimerkissä käytin kuvan mukaista ja kysymyksessä esittelemääsi varaustilannetta.
Tuolta sivulta saattaa löytyä ratkaisu.
https://hoopercharles.wordpress.com/2009/12/08/sql-combining-over-lapping-date-rows/
Vaikka tuolla pelataan päivämäärillä, niin idea on sama.
Päivän makeimmat naurut tuli kun tuota Charles Hooperin mittatilaustyötä luki. Saattoi harmittaa jos tilaaja ilmoitti että kertakäyttötarve oli eilen ja se saatiinkin tehtyä ruutupaperilla. Kohtalaisen paljon rivejä mokoman pikkujutun takia :D
Muutamalla sql-rivillä näyttäisi onnistuvan tuon tyyppisen ongelman ratkaisu.
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=c9be3f243ac5f3d7f912d71a836b22ca