Gå til innhold

Sumerisk spørring fra to tabeler.


Anbefalte innlegg

trenger litt hjelp her vist noen har mulig het til og se på dette.

 

har to tabeler som heter Bruker1 og Bruker2

 

begge tabellene inneholder

 

Dato datetime

[Nye tildelte] int

[Allerede tildelte] int

 

det eg prøver og få til er at det skal vise

Bruker1 = saker løst

Bruker2 = saker løst

 

saker løst er denne utregningen.

saker løst = [Allerede tildelte] + [Nye tildelte] - "[Allerede tildelte] neste Dato"

Lenke til kommentar
Videoannonse
Annonse
Ser ikke helt poenget med å ha to tabeller?

 

Hva er neste dato?

 

Nye tildelte og Allerede tildelte - er dette antall?

 

vi skal sette opp en database med over 30 brukere, her i dette eksempellet laget eg to bruker1 og bruker2 bare for og forenkle det, poenget er at det skal logges hvor mye saker kver enkel bruker løser pr dag.

ser ingen løsning på og plasserer det inn i en tabell? prøvt og tenke rundt det, men klarer ikke komme med en løsning på dette.

 

det skal kontnuerlig leveres ut saker til brukerene, så [Nye tildelte] vil vere en variabel verdi utover dagen, starter på 0 og ender på et nummer alt etter hvor mange saker denne bruker har fått utlevert.

 

[Allerede tildelte] er en statisk verdi den vil vere lik hele dagen og dette tallet er så mange saker en bruker hadde på seg når han gikk hjem dagen før.

 

et kort eksempel vil se noe slik som her ut.

mandag starter bruker1 med 0 saker, utover dagen vokser [Nye tildelte] la oss si den ender på 30stk. Bruker1 løste 20 av disse, så morgenen etter vil [Allerede tildelte] vere 10

 

så 30 - 10 = 20 det er 20 eg er ute etter her, dette er en verdi som ikke ligger i databasen men som kan regnes ut på grun av i databasen ligger [Nye tildelte] og [Allerede tildelte] verdiene på dato

 

vist du har la oss si logget i et år [Nye tildelte] og [Allerede tildelte] i databasen er det en mulighet og lage en query som gir tilbake dette reultatet sotert etter dato.

Lenke til kommentar

Wernie:

Det svaret der kunne du godt holdt for deg selv Wernie. Han har stillt et relevant spørsmål i riktig kategori.

 

Til trådstarter:

Du trenger ikke 30 forskjellige tabeller for 30 brukere. Du trenger en tabell for brukerene og en tabell med oppgavene.

 

CREATE TABLE bruker (

brukerid serial primary key,

fornavn text,

etternavn text

);

 

CREATE TABLE oppgave (

oppgaveid serial primary key,

id_brukerid integer REFERENCES bruker,

antall_tildelte integer,

antall_løst integer,

dato date

);

 

(Syntaxen er skrevet for postgresql)

 

Hvis du skal hente ut antallet saker brukerene har løst på en dato kan du skrive:

SELECT fornavn, etternavn, antall_løst

FROM oppgave

INNER JOIN bruker ON id_brukerid = brukerid

WHERE dato = '01.01.2009'

 

Hvis du skal finne hvor stor backloggen er så kan du skrive:

SELECT fornavn, etternavn, SUM(antall_tildelte+antall_løst)

FROM oppgave

INNER JOIN bruker ON id_brukerid = brukerid

GROUP BY fornavn, etternavn

 

Det er forresten anbefalt at du tar å leser en grunnleggende bok/tutorial e.l. om databaser, for du var laaaangt ute på bærtur her. ;)

Lenke til kommentar
Wernie:

Det svaret der kunne du godt holdt for deg selv Wernie. Han har stillt et relevant spørsmål i riktig kategori.

 

Det var da slett ikke vondt ment. Falt bare for fristelsen til å komme med en dårlig vits. Men hvis du/han ikke forstod den så beklager jeg.

 

Werner

Endret av wernie
Lenke til kommentar

Takk blackbrrd, det løste en del av problemene eg har prøvdt og tenke rundt når det kommer til hvordan en database bør bygges opp, eg holder på med turtorials men trengte en push for og forstå hvofor det bør gjøres på denne måten, og nå ser eg det mye klarere etter din forklaring.

 

på denne måten har eg nå en mye bedre oversikt over antall saker i forholdt til dato.

 

men antall_løst er en varialbel som ikke blir satt før dagen etter en gitt dato, dette er for at den personen som updater databasen skal slippe og regen ut manuelt denne sum ved dags slutt.

 

har nå satt det opp slik som her.

 

oppgaveid, id_brukerid, antall_tildelte, allerede_tildelte, dato

1 1 12 13 04.05.2009

2 2 12 20 04.05.2009

3 1 32 10 05.05.2009

4 2 2 2 05.05.2009

5 1 3 5 05.06.2009

6 2 3 5 05.06.2009

NULL NULL NULL NULL NULL

 

regner med eg må bruke kansje to queryes for og oppnå resultatet eg er ute etter, databasen skal bakes in i en C# Dispatcher Applikasjon vi programere på. og det er er ute etter er og lage en statestik visning per uke, per måned på totalt antall saker løst per bruker.

 

det tallet eg er ute etter = antall_løst

og dette tallet er

 

(antall_tildelte + allerede_tildelte) - "allerede_tildelte neste dato på samme id_brukerid"

 

så i dette tilfellet ville det blitt.

 

(12 + 13) - 10 = 15

Antall løst = 15

 

for og løse dette tenkte eg på denne løsningen

 

ta ut to querys, en med totalt pr bruker, og en med kun allerede_tildelte pr bruker pr dato, men hvordan eg skal løse dette rent praktisk er eg usikker på..

 

noen som har et forslag?

Lenke til kommentar

Det går an å skrive SELECT inni SELECT-er, f.eks:

 

SELECT *,

(SELECT kolonne FROM tabell WHERE test.id = tabell.id)

FROM test

 

Antall løste saker burde du bare ha som et tall i tabellen, skjønner ikke hvorfor dette er et tall som du skal regne deg fram til?

 

Wernie:

Det svaret der kunne du godt holdt for deg selv Wernie. Han har stillt et relevant spørsmål i riktig kategori.

 

Det var da slett ikke vondt ment. Falt bare for fristelsen til å komme med en dårlig vits. Men hvis du/han ikke forstod den så beklager jeg.

 

Werner

Greit nok, men når du hadde det moro på hans bekostning kunne du jo også svart på det lettere difuse spørsmålet hans. :D

Lenke til kommentar

Det er på grunn av slik C# Dispacher Applicationen som skriver til databasen er bygget opp i windows formet, og vi vil ungå at det blir en manuel jobb og regne ut hvær kveld på 30 brukere hva antall løste saker er. Det er for og forenkle arbeidsopgavene.

 

For og se hvorfor dette gjøres, må du se på hvordan teamet jobber. 1 dispacher som har ansvaret for og levere ut saker til rette vedkomende, og 30 saksbehandlere som har ansvart for og løse saker. Kver saksbehandler vil til enhvær tid ha mellom 1 til 20 saker i sin inbox som skal løses. Når Saksbehandler går for dagen har han fortsatt saker stående på seg i sin inbox så her kommer allerede_tildelte inn i bildet.

 

 

Toolet er bygget opp slik.

 

Kun to Celler per bruker.

 

Celle 1 = nye_tildelte

hun trykker på en knapp ved siden av cellen som har code

		private void button1_Click(object sender, EventArgs e)
	{
		decimal sum = decimal.Parse(textBox1.Text) + new decimal(1);
		textBox1.Text = sum.ToString(); 
	 }

 

Celle 2 = allerede_tildelte

 

blir manuelt updatert kver morgen av Dispatcher, hvorfor kver morgen? jo for noen brukere jobber utover kvelden, og ingen brukere blir noen gang tomme for saker i Innboxen sin. Dispacher slår opp brukern ser hvor mange saker han har på seg ved morgen start og plasserer dette inn i textBox2 som blir lagret til allerede_tildelte i databasen ved dags slutt.

 

ved dags slutt skrives Data Dispacher applicationen har samlet opp til Database der ny linjer me data per bruker og dato blir skrevet. så her har du problemet Antall_løst har aldri blitt registrert av Dispacher applicationen kun max saker en bruker har hatt på seg i løp av dagen, så antall_løst vet du ikke før dagen etterpå når dispacher går igjenom alle brukerene og ser hvor mange saker di har på seg.

Lenke til kommentar
Hvor har du lagret hver sak?

 

sakene blir lagret og dispacet ut fra en web applicasjon programert og velikeholdt av en 3 part, så vi har ingen mulighet for og få inn mer funksjonalitet der.

Lenke til kommentar
Såvidt jeg har forstått så skal du kun lagre antall uløste oppdrag, og antall oppdrag løst pr dag pr bruker?

 

ja antall løste saker er målet, vil ha en query som gjør at eg kan dumpe antall løste saker pr bruker pr dato ned i en variable slik at eg kan bruke dette i en grafisk statestik visning.

 

Tenkte og programere et window form som viser i curver og tall antal saker løst pr bruker feks for januar o.l. men ettersom dette er første gang eg jobber med databaser trenger eg litt tenke hjelp. og har fått mye allerede kommet et bra stykke på vei.

 

planen nå er og lage 2 queryes en for og hente antall saker en bruker har hatt pr dag så

 

query1 blir::: nye_tildelte + allerede_tildelte mellom 01.01.09 -31.01.09

query2 blir::: allerede tildelte mellom 02.01.09-01.02.09

 

da vil eg få ut 31 verdier på query1 og 31 verdier på query2

 

så setter eg disse to araysa opp mot kverander Q1 - Q2 = Antall_Løst

da har eg 31 verdier me Antall_løst for januar måned som eg kan bruke i en grafisk fremstilling.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...