login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Uitleen systeem (Opgelost)

Offline joppie - 01/06/2010 12:37
Avatar van joppieNieuw lid Ik ben bezig om met php en mysql een uitleen systeem te maken voor laptops, beamers enz.

Ik heb nu een aantal tabellen namelijk:
Klanten: met id, voornaam, achternaam, adres enz
hardware: met id, type, hardware nummer, naam
registraties: met id, klantid, hardwareid, uitleen datum en retour datum

Nou moet het dus zo zijn dat een laptop of beamer niet 2 keer op de zelfde datum gereserveerd mag zijn,
maar dat het wel mogelijk moet zijn om een laptop of beamer alvast voor in de toekomst te reserveren.

Dit probeer ik dus te doen aan de hand van de uitleen en retour datum.
Het probleem waar ik nu tegen aanloop is dat op het moment dat een een laptop in de registratie tabel voorkomt ik hem helemaal niet meer kan uitlenen of dat als hij er vaker in voorkomt hij hem alsnog weer geeft omdat een van de 2 datums wel kan maar de andere niet.

Ik heb al verschillende query's geprobeerd, maar ik kom er niet uit.
  1. SELECT * FROM hardware WHERE Id NOT IN (SELECT HardwareId FROM registreren WHERE (Uitleen_datum<'2010-06-31 9:37:00' AND Retour_datum<'2010-06-31 11:37:00')
  2. OR (Uitleen_datum>'2010-06-31 9:37:00' AND Retour_datum>'2010-06-31 11:37:00') ) AND TYPE='Beamer';


Heeft iemand misschien een idee hoe ik dit zou kunnen oplossen?

2 antwoorden

Gesponsorde links
Offline MiST - 01/06/2010 13:29 (laatste wijziging 01/06/2010 13:48)
Avatar van MiST Lid Als ik het goed begrijp wil je controleren of er een bestaande reservatie is voor een stuk hardware in de periode dat iemand dat stuk hardware wil reserveren.

Met een beetje logica kan je dan stellen dat deze query geen resultaten mag teruggeven voor een bepaald stuk hardware.

  1. SELECT * FROM reservations
  2. WHERE start <= [[opgegeven einddatum]]
  3. AND eind > [[opgegeven startdatum]]
  4. AND id = [[bepaald toestel]]


Ik denk dat als je dat dan inplugt in je query, dus
  1. SELECT * FROM hardware WHERE id NOT IN (
  2. SELECT hardwareId FROM reservations
  3. WHERE start <= [[opgegeven einddatum]]
  4. AND eind > [[opgegeven startdatum]]
  5. ) AND type = 'BEAMER'


het wel zou moeten werken... En dan krijg je dus alle mogelijke beamers terug voor de gekozen periode...

EDIT: out of curiosity heb ik het eens getest en het lijkt te werken. Hoop dat dit was wat je zocht. Nu terug naar mijn cursus Toegepaste Discrete Algebra, heuj!
Bedankt door: joppie
Offline joppie - 01/06/2010 14:35
Avatar van joppie Nieuw lid Bedankt, het werkt.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.165s