SQL Tentamen

Status
Niet open voor verdere reacties.

Bryce

Nieuwe gebruiker
Lid geworden
18 aug 2007
Berichten
4
Beste forumleden,

Ik moet voor maandag een SQL tentamen inleveren en wil het graag zo goed mogelijk maken.
Zouden jullie kijken of er eventueel verbeteringen zijn?

Alvast bedankt!

Deel B: SQL

Chalet- en appartementverhuur Alphûs
Alphûs treedt op als tussenpersoon voor de verhuur van vakantiehuisjes in de Alpen (Zwitserland, Oostenrijk, Frankrijk en Italië). De eigenaren van de huisjes besteden de verhuur uit aan Alphûs. Er wordt onderscheid gemaakt tussen twee soorten huisjes: chalets en appartementen.
De huurprijs van een huisje kan per week verschillen. Het huren van een huisje in de voorjaarsvakantie is bijvoorbeeld vele malen duurder dan in oktober. De huurprijzen per huisje per week zijn vastgelegd in de tabel huurperiode. Bij verhuur van een huisje wordt het huurdernr vastgelegd bij de betreffende huurperiode. Is bij een huurperiode geen huurdernr bekend, dan is het huisje in de betreffende week nog vrij.

Op de volgende bladzijde is het strokendiagram weergegeven.

Onderstreept = primaire sleutel
Cursief = verwijssleutel
op = optionele kolom


Eigenaar
Eigenaarnr Naam Adres Postcode Plaats Land Telefoon Email op Bankrekening

Huis
Huisnr Eigenaarnr Gebouwnaam Adres Plaats Land Soortcode AantalPersonen Oppervlakte

Land
Land

Soorthuis
Soortcode Omschrijving

Huurperiode
Huisnr Startdatum Weeknr Huurprijs Huurdernr op

Huurder
Huurdernr Naam Adres Postcode Plaats Telefoon Email op


Schrijf queries om de onderstaande vragen te beantwoorden of acties uit te voeren.

1. Geef van alle huurders hun naam en hun emailadres. Zorg ervoor dat huurders zonder emailadres niet op de lijst voorkomen.

SELECT naam, email
FROM Huurder
WHERE email IS NOT NULL

2. Maak een lijst van alle chalets (omschrijving van het soort huis is chalet) in Zwitserland die geschikt zijn voor 6 of meer personen. Orden de lijst op plaatsnaam en daarna op oppervlakte.

SELECT *
FROM Huis h
JOIN Soorthuis s ON h.Soortcode = s.Soortcode
WHERE h.Land = “Zwitserland”
AND s.Omschrijving = “chalet”
AND h.AantalPersonen = > 6
ORDER BY plaats, oppervlakte

3. Geef een overzicht van de verhuur in het jaar 2006 van huisje 331. Geef per huurperiode: weeknr, huurprijs en de naam van de huurder. Ook huurperiodes waarin het huisje niet is verhuurd, moeten in de lijst worden weergegeven. Toon in dit geval in plaats van de naam van de huurder de tekst ‘vrij’. Geef het overzicht een logische volgorde.

SELECT h.Weeknr, h.Huurprijs, e.Naam
NVL (e.naam, ‘vrij’)
FROM Huis h
JOIN Eigenaar e ON h.Eigenaarnr = e.Eigenaarnr
WHERE startdatum BETWEEN TO_DATE (01-01-2006) AND (01-01-2007)
AND h.Huisnr = ‘331’

4. Hoeveel huisjes verhuurt Alphûs in Frankrijk?

SELECT count(e.Eigenaarnr)
FROM Eigenaar e
JOIN Huis h ON e.Eigenaarnr = h.Eigenaarnr
WHERE e.Naam = "Alphûs"
AND h.Land = "Frankrijk"


5. Alphûs wil graag weten wat haar belangrijkste huurders zijn. Maak daarom een lijst met per huurder zijn naam en het aantal weken dat de huurder een huisje via Alphûs heeft gehuurd. Alleen huurders die minimaal 3 keer een huisje hebben gehuurd moeten in het overzicht weergegeven worden. Zet de huurders die het vaakst een huisje hebben gehuurd bovenaan de lijst.



6. Welk huisje is het grootst (heeft de grootste oppervlakte)? Geef huisnummer en oppervlakte.

SELECT huisnr, oppervlakte
FROM Huis
WHERE oppervlakte =
( SELECT max(oppervlakte)
FROM Huis)

7. Geef de huisjes (gebouwnaam, adres, plaats, land en naam van de eigenaar) waarvan de gebouwnaam begint met het woord ‘Alp’.

SELECT h.Gebouwnaam, e.Adres, e.Plaats, e.Land, e.Naam
FROM Huis h
JOIN Eigenaar e ON h.Eigenaarnr = e.Eigenaarnr
WHERE gebouwnaam LIKE “Alp%”

8. Geef voor alle eigenaren die in Amsterdam wonen het aantal huisjes weer dat ze via Alphûs verhuren.

SELECT count(e.Eigenaarnr)
FROM Eigenaar e
WHERE e.Naam = “Alphûs”
AND e.Plaats = “Amsterdam”

9. Een huurder wil graag een huisje huren in Meribel (Frankrijk). Hij wil graag weten welke huisjes de grootste oppervlakte per persoon hebben. Geef daarom van alle huisjes in Meribel de gebouwnaam, het aantal personen en de oppervlakte per persoon.

SELECT h.gebouwnaam, h.AantalPersonen, (‘h.Oppervlakte / h.AantalPersonen’)
FROM Huis h
JOIN Eigenaar e ON h.Eigenaarnr = e.Eigenaarnr
WHERE plaats = ‘Meribel’

10. Verwijder alle huurperiodes van vóór 1 januari 2005.

DELETE *
FROM Huurperiodes
WHERE DATE < 01-01-2005
 
Of melden aan de moderator;) maar heb ik al gedaan.

Of helemaal niks zeggen en alleen melden ;)

Bryce,

Die melding gaat niet voor jou op. Je komt niet hier om je vragen neer te zetten en hopen dat je het voor je gemaakt gaat worden. Jij wilt alleen weten of wat jij aandraagt als oplossing goed is of beter kan.

Wat mij betreft kan dit blijven staan zodat er gekeken kan worden of je in de goede richting zit.

Voor de heren Tha Devil en Dapunt: http://www.helpmij.nl/forum/showthread.php?t=214634
 
Sorry ik wist niet dat het niet mocht,

Het is niet dat ik er geen aandacht aan heb besteed zoals je kan zien. Ik wou alleen een extra controle van mensen met verstand als zeg maar een zekerheid ;).

Groetjes, Bryan

P.S. In die andere treath stond dat mensen niet zomaar hun huiswerk hier mochten droppen, alleen als ze er echt niet uitkwamen konden jullie mij helpen. Een simpele controle is toch niet teveel gevraagd?
P.P.S. Thx mario!
 
Laatst bewerkt:
Wat mij betreft kan het blijven staan. Je hebt laten zien dat je er zelf mee bezig bent geweest en dat je het voor controle hier neerzet dus die huiswerk mededeling gaat niet voor jou op.
 
My bad, het woordje tentamen was de boosdoener :(

Wat je zou kunnen doen is in PHP en MySQL de database namaken en dan in PHPMyAdmin de queries uitvoeren om te kijken of je de juiste resultaten terug krijgt...

Zo te zien heb je 10 niet helemaal goed, ik denk dat hij zo moet
Code:
DELETE * 
FROM Huurperiode
WHERE Startdatum < 01-01-2005
 
OK thx!

Kan je bij vraag 9 gewoon Oppervlakte / AantalPersonen doen? (wist niet zeker of dat zo in de query gezet mag worden.
 
Volgens mij kan dat wel, hoewel ik er niet zeker van ben of je die single quotes wel moet gebruiken.
 
Als jullie dan verder geen op of aanmerkingen hebben verstuur ik hem ;).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan