2010-08-08, 02:03
#1
Krånglig rubrik kanske men för att göra det lite enklare...
Har en databas med data inmatad.
Har två frågor som SQL ska besvara.
Frågorna:
1. Vilken klubb har haft flest DJ:er på en natt? Visa namn, adress, antal dansgolv och datum då det var flest DJ:er!
2. Vilken DJ har jobbat i alla klubbar i en viss stad? Välj själva en stad! Visa namn, epost och webbadress!
Bild på det som behövs ur databasen, http://data.fuskbugg.se/skogsturken/databas.png
Koden som ger rätt resultat (fråga 1) men ändå är fel med motiveringen "Nej. Frågan gäller vilken klubb som haft flest dj:er på en natt. Varför räknar ni datum? Se också till att ni får med alla joinvillkor i joinar där det finns flera kolumner i FN."
Koden som ger rätt resultat (fråga 2) men ändå är fel med motiveringen "Nej. Tänk på sammansatta PN/FN-par så att ni kopplar rätt."
Kan ni se vad som är fel, om det nu är fel och ge mig lite tips så jag kommer in på rätt spår? Jag får ju ut rätt resultat med koderna.
Har en databas med data inmatad.
Har två frågor som SQL ska besvara.
Frågorna:
1. Vilken klubb har haft flest DJ:er på en natt? Visa namn, adress, antal dansgolv och datum då det var flest DJ:er!
2. Vilken DJ har jobbat i alla klubbar i en viss stad? Välj själva en stad! Visa namn, epost och webbadress!
Bild på det som behövs ur databasen, http://data.fuskbugg.se/skogsturken/databas.png
Koden som ger rätt resultat (fråga 1) men ändå är fel med motiveringen "Nej. Frågan gäller vilken klubb som haft flest dj:er på en natt. Varför räknar ni datum? Se också till att ni får med alla joinvillkor i joinar där det finns flera kolumner i FN."
Kod:
SELECT klubb.namn, lokal.gAdress, x.antal AS antalGolv, tillfälle.datum
FROM tillfälle, klubb, lokal, [SELECT klubb.namn as klubbnamn, klubb.klubbid, COUNT(dansgolv.namn) as antal
FROM dansgolv, klubb
WHERE dansgolv.klubb = klubb.klubbid
GROUP BY klubb.namn, klubb.klubbid
]. AS x
WHERE (((tillfälle.klubb)=[klubb].[klubbid]) AND ((klubb.lokal)=[lokal].[lokalid]) AND ((x.klubbnamn)=[klubb].[namn]) AND ((x.klubbid)=[klubb].[klubbid]))
GROUP BY klubb.namn, lokal.gAdress, x.antal, tillfälle.datum
HAVING (((Count(tillfälle.datum))=(SELECT MAX(flestDatum) FROM (
SELECT klubb.klubbid, tillfälle.datum,COUNT(tillfälle.datum) as flestDatum
FROM klubb, bokning, tillfälle
WHERE bokning.tillfälle = tillfälle.datum
AND tillfälle.klubb = klubb.klubbid
AND bokning.dansgolv = tillfälle.dansgolv
GROUP BY klubb.klubbid, tillfälle.datum))));
Koden som ger rätt resultat (fråga 2) men ändå är fel med motiveringen "Nej. Tänk på sammansatta PN/FN-par så att ni kopplar rätt."
Kod:
SELECT DISTINCT artistnamn, epost, webplats
FROM DJ, bokning
WHERE bokning.DJ = DJ.epost
AND NOT EXISTS (
SELECT klubb.namn
FROM klubb,lokal
WHERE stad = 'Västerås'
AND klubb.lokal = lokal.lokalid
AND klubb.namn NOT IN (
SELECT klubb.namn
FROM tillfälle,bokning,klubb, dansgolv
WHERE bokning.tillfälle = tillfälle.datum
AND bokning.dansgolv = tillfälle.dansgolv
AND bokning.klubb = tillfälle.klubb
AND tillfälle.dansgolv = dansgolv.namn
AND tillfälle.klubb = dansgolv.klubb
AND dansgolv.klubb = klubb.klubbID
AND DJ = epost
));
Kan ni se vad som är fel, om det nu är fel och ge mig lite tips så jag kommer in på rätt spår? Jag får ju ut rätt resultat med koderna.
__________________
Senast redigerad av KINAMAT 2010-08-08 kl. 02:06.
Senast redigerad av KINAMAT 2010-08-08 kl. 02:06.