SQL-nøtt
|
SQL-nøtt
#1863530
25/09/2014 17:05
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Hei jeg trenger hjelp til en SQL nøtt,er det noen eksperter i salen:
Lag en spørring som viser hvilke deler det må bestilles flere av. Tips: For hver gave er det mulig å finne ut antallet som trengs av hver enkelt del (ant), og ønskelisten forteller hvor mange av hver gave som må produseres (for å oppfylle alle ønsker). En del kan imidlertid inngå i flere ulike gaver. Dette kan brukes for å beregne behovet for hver del. For å avgjøre om det må bestilles flere enheter må behovet sammenholdes med nåværende lagerstatus for hver del (lager_ant). Merk: Generelt kan noen av ønskene allerede være ferdig produsert, og skal i så fall ikke telles med i beregning av behovet. Tabellene er : gave, del,oppbygging, person, onske Hjelp hode koker litt
|
|
|
Re: SQL-nøtt
[Re: ]
#1863544
25/09/2014 17:35
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
He he alt er komplisert når man prøver seg som student etter fylte førti. Ser fornuftig ut Takk for hjelpen
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863556
25/09/2014 18:06
|
Registrert: Apr 2011
Innlegg: 527
Odinpodin
Avhengig
|
Avhengig
Registrert: Apr 2011
Innlegg: 527 |
Fikk du til? tror jeg ville ha løst det med subselect men er ikke helt sikker på oppgaven, spesielt ikke dette med personer og ønsker. Og i hvilken tabell har du lagerbeholdning?
Select del, sum(ant_deler) from ( select del, ant_deler from oppbygging ) group by del
"Don’t buy upgrades, ride up grades." Merckx
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863559
25/09/2014 18:10
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Lagerbeholdning er i tabell DEL som LAGER_ANT
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863563
25/09/2014 18:36
|
Registrert: Apr 2011
Innlegg: 527
Odinpodin
Avhengig
|
Avhengig
Registrert: Apr 2011
Innlegg: 527 |
Først må vi summere antall deler som trengs, uavhenig produkt(gave), og deler som trengs finner vi i oppbygging(tror jeg?). Så tar vi antall deler som trengs minus antall på lager.. er vel så enkelt?
Select del, sum(ant_deler)-(sum(ant_lager)) as må_bestilles from ( select a.del, a.ant_deler, b.ant_lager from oppbygging a left join del b on (a.del_id = b.del_id) ) group by del
Redigert av Odinpodin; 25/09/2014 18:48.
"Don’t buy upgrades, ride up grades." Merckx
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863579
25/09/2014 19:18
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
SELECT d.dnr, SUM( d.lager_ant ) - SUM( o.ant ) AS må_bestilles FROM del AS d, oppbygging AS o WHERE d.dnr = o.dnr GROUP BY d.navn
Tabell 'del' har kolonner: dnr navn lager _ant Tabell 'oppbygging'har kolonner: gnr, dnr, ant. Jeg trenger ting inn med teskje :-)
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863581
25/09/2014 19:26
|
Registrert: Jun 2008
Innlegg: 387
TEK
Entusiast
|
Entusiast
Registrert: Jun 2008
Innlegg: 387 |
Hadde vært litt enklere om du hadde lagt ut et skjema over alle tabellene... Det kan du enkelt sette opp i SQL Server dersom det er det du bruker...
Eventuelt i ERWin eller de fleste andre databasemodelleringsprogrammer. Fortrinnsvis med relasjonene mellom tabellene også...
Scott Spark RC 2011 Hard Rocx Equilibrium Cambrium Discimus 2007
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863633
25/09/2014 20:54
|
Registrert: Apr 2011
Innlegg: 527
Odinpodin
Avhengig
|
Avhengig
Registrert: Apr 2011
Innlegg: 527 |
SELECT d.dnr, SUM( d.lager_ant ) - SUM( o.ant ) AS må_bestilles FROM del AS d, oppbygging AS o WHERE d.dnr = o.dnr GROUP BY d.navn
Tabell 'del' har kolonner: dnr navn lager _ant Tabell 'oppbygging'har kolonner: gnr, dnr, ant. Jeg trenger ting inn med teskje :-) Den spørringer du har der funker ikke? Som Tek sier blir det mye enklere hvis du legger med ett skjema over tabellene, kanskje med ett eksempel på hvordan du ser for deg resultatsettet skal se ut. Jeg ville ha gjort den spørringen du har over slik: SELECT d.dnr, SUM(d.lager_ant) - SUM(o.ant) AS må_bestilles FROM del d left join oppbygging o on (o.dnr = d.dnr) GROUP BY d.navn
"Don’t buy upgrades, ride up grades." Merckx
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863640
25/09/2014 21:10
|
Registrert: Jun 2008
Innlegg: 387
TEK
Entusiast
|
Entusiast
Registrert: Jun 2008
Innlegg: 387 |
OK - ble jo litt moro så jeg måtte finne ut av det. Gitt at: - Ønskeliste ikke har noe relevant informasjon i denne sammenhengen - En gave kan være produsert eller ikke - En gave kan bestå av mange deler. En del kan inngå i mange gaver - Tabellen oppbygning beskriver hvilke, og hvor mange, deler en gave består av
Og at vi har disse tabellene gave (gnr, navn, produsert) del (dnr, dnavn, lager_ant) oppbygning (gnr, dnr, ant)
Så kan vi først finne antall deler bestilt for alle gaver ved å bruke denne spørringen: select o.dnr, sum(ant) as best_ant from oppbygning o group by o.dnr
Dette vil gi oss en liste med følgende kolonner dnr, best_ant hvor best_ant naturligvis er det bestilte antall av den gitte delen.
Men, vi vil også sikkert også vite navn på delen og antall vi faktisk har på lager. For å få til dette må vi inkludere informasjon fra del tabellen. Dette kan vi gjøre ved å joine inn informasjon fra del tabellen, slik som dette: select d.dnr, d.dnavn, lager_ant, sum(ant) as best_ant from oppbygning o join del d on o.dnr = d.dnr group by d.dnr, d.dnavn, lager_ant (de to siste grupperingsfeltene er med fordi sql syntaksen krever det, de har ingen egentlig betydning)
Dette gir oss en tabell med følgende informasjon dnr, dnavn, lager_ant, best_ant
Men da vet vi fortsatt ikke hvor mange vi må bestille. For å finne ut det må vi finne summen av lager_ant minus det bestilte antallet. Noe vi får om vi utvider spørringen over som følger: select d.dnr, d.dnavn, lager_ant, sum(ant) as best_ant, lager_ant-sum(ant) as lager_diff from oppbygning o join del d on o.dnr = d.dnr group by d.dnr, d.dnavn, lager_ant
Nå begynner vi å nærme oss. Men vi har fortsatt ikke tatt hensyn til om gaven er produsert eller ikke. Det kan vi gjøre ved å joine inn informasjon fra gaven, og bruke det for å filtrere slik at vi kun teller opp det som ikke er produsert. Da må vi utvide spørringen over slik at den blir som følger: select d.dnr, d.dnavn, lager_ant, sum(ant) as best_ant, lager_ant-sum(ant) as lager_diff from oppbygning o join del d on o.dnr = d.dnr join gave g on o.gnr = g.gnr where g.produsert = 0 group by d.dnr, d.dnavn, lager_ant
Resultatet vil se helt likt ut som før, men nå har vi tatt hensyn til om gaven er produsert eller ikke.
Det gjenstår en liten utfordring for å justert listen slik at den kun inneholder de som har en negativ lager_diff, altså de det skal bestilles noe av - men litt utfordringer må du jo ha selv ;-)
Redigert av TEK; 25/09/2014 21:14.
Scott Spark RC 2011 Hard Rocx Equilibrium Cambrium Discimus 2007
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1863645
25/09/2014 21:20
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Den siste fikk jeg kjørt,med et resultat. Prøver den siste.Takk for hjelpen !
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1864134
26/09/2014 17:42
|
Registrert: Jun 2008
Innlegg: 387
TEK
Entusiast
|
Entusiast
Registrert: Jun 2008
Innlegg: 387 |
Stort sett så gjelder det å isolere problemstillingene, begynne enkelt også bygge på med flere ting etterhvert... Men man må nesten ha noe å teste ut spørringene på, du skal være innmari god om du klarer å skrive SQL setninger kun "på papiret".
Scott Spark RC 2011 Hard Rocx Equilibrium Cambrium Discimus 2007
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1864435
27/09/2014 10:58
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Uansett imponerende jobbet,selv om jeg tror svaret skulle være noe enklere.Vi har bare hatt 4 forelesninger,og bare såvidt hatt noe om ytre koblinger.
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1864752
27/09/2014 20:53
|
Registrert: Apr 2011
Innlegg: 527
Odinpodin
Avhengig
|
Avhengig
Registrert: Apr 2011
Innlegg: 527 |
oracle sertifisering du driver med eller? ytre koblinger er veldig viktig i relasjonsdatabaser så det kommer du nok til å få høre nok om.
"Don’t buy upgrades, ride up grades." Merckx
|
|
|
Re: SQL-nøtt
[Re: Morteen]
#1864808
28/09/2014 06:37
|
Registrert: Apr 2004
Innlegg: 655
Morteen
OP
Avhengig
|
OP
Avhengig
Registrert: Apr 2004
Innlegg: 655 |
Nei jeg tar et høyskole kurs om databaser og SQL generelt.
|
|
|
|
|