webForumDet fria alternativet

Hjälp med hur man ska tänka vid SQL frågor

Databaser & SQL

7 svar · 2 120 visningar · startad av Mrdoppy

Medlem sedan juni 20116 inlägg
Frågan#1

Sitter och pluggar SQL i Microsoft Access 2003 och skapat en konceptuell modell och sedan en logisk relationsdatabas modell. Nu har jag fyllt databasen och ska besvara frågor med hjälp av SQL språket.

Har Svårt att fatta hur jag ska tänka och hur jag ska gå till väga.. Jag vill egentligen bara ha vägledning då jag vill förstå hur man gör.

Jag har byggt en databas som hanterar fotboll och ska bla svara på vilken av de arenor jag har som haft flest olika lag som spelat där.

Har försökt men inte kommit längre än att jag ser lagID och de olika arenorna

SELECT DISTINCT Arena.namn, Stad.Namn, Stad.Land, SpelandeLag.LagID
FROM Arena, Stad, [Match], SpelandeLag
WHERE SpelandeLag.matchID=Match.MatchID And Match.ArenaID=Arena.ArenaID And Stad.PlatsID=Arena.PlatsID;

Bifogar 2 bilder, modell och svaret jag får på min kod.

Skulle vara jätte snällt om någon kunde hjälpa mig att komma på rätt bana!

MVH
Mr.doppy

RelModel.jpgbild1.jpg
Medlem sedan juni 20116 inlägg
#2

Ingen som har en ide? (A)

Medlem sedan maj 20011 826 inlägg
#3

Precis vilken SQL-fråga är det du vill ha hjälp med? Börja med en enkel SQL-fråga som du sen bygger vidare med villkor och olika join.

Tänk att du ska hämta data ur olika mängder.

Medlem sedan juni 20116 inlägg
#4

erciz skrev:

Precis vilken SQL-fråga är det du vill ha hjälp med? Börja med en enkel SQL-fråga som du sen bygger vidare med villkor och olika join.

Tänk att du ska hämta data ur olika mängder.

De jag inte kan förstå i det hela är hur jag ska kunna ta fram de olika lagen, jag tänker att man kan ta och gruppera alla arenor ta distinct för att bli av med lag som spelar fler gånger och sedan räkna med count för att se vem som har flest?

Kan man gruppera alla arenor eller blir de extra jobb? För vi har just nu i databasen några lag som spelar 5-6 matcher på en arena sen 6 lag som spelar en gång på en annan arena, hur ska jag tänka när jag vill veta vem som har flest olika lag, jag har kommit så långt att jag kan se varje arena med vilka lag id som spelat på arenan, men fast där, bilderna jag la upp visar detta och koden.

Är det Rätt tänk eller är jag ute och cyklar? :)
Tack för att du svarar!
Mrdoppy

Medlem sedan juni 20116 inlägg
#5

Tänkte om lite och kom fram till en annan ide med en i gruppen som jag arbetar med.

SELECT arenaid, count(lagid) AS antal
FROM (SELECT distinct lagid,arenaid
FROM spelandelag,match
where match.matchid = spelandelag.matchid)
GROUP BY arenaid

Via denna kod vet vi nu då hur många lag som spelat på varje arena, utan dubletter, det jag nu vill göra är att koppla ihop den med det vi vill visa och skapa ett uttryck där vi säger att den med flest olika lag ska visas, antar att de är via Having COUNT(*)

så hur nästlar man dessa två

SELECT  Arena.namn, Stad.Namn, Stad.Land
FROM Arena, Stad
Medlem sedan juni 20116 inlägg
#6

Hur gör man för att räkna i min tabell "antal" och ge ett villkor att jag vill ha den som är störst och vi får inte använda top...

Tänkte mig typ något i still med
HAVING MAX(antal)

eller

HAVING COUNT(*) = (SELECT MAX(antal)

men får inte ihop det.. Skulle vara jätte glad om någon kunde hjälpa mig eller förklara hur jag bör tänka ?

MVH
mrdoppy

Medlem sedan juni 20116 inlägg
#7

ingen som har någon ide?!

Medlem sedan juli 200012 978 inlägg
#8

Du är ju välkommen till wF, men om jag förstår det hela rätt, är det en skoluppgift!
Vi brukar inte lösa sådana.
Men dela upp frågan i flera delfrågor så att du vet syntaxen är rätt.
Prova sedan att samla ihop dem.
Du vet att även Elefanter äter man bit för bit, säger Lasp

276 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)