/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Flere tabeller knyttet sammen - .lidt indv~
Fra : Ukendt


Dato : 04-05-08 19:45

Jeg har 3 tabeller

KLASSE
Klasse, pk
Budget

VARE
ID, pk
Navn
Beskrivelse
Pris

POSTERINGER
ID, pk
Dato
Klasse, fk
VareID, fk
Antal

Kan jeg i en grid få vist følgende oplysninger (en liste over køb i en
enkelt klasse)

- Klasse, dato, varenavn (ikke ID), antal, varens á pris, samlet pris -

Samt det samlede forbrug for klassen ved at lægge den samlede pris for
samtlige linier for klassen sammen.



 
 
Kristian Damm Jensen (05-05-2008)
Kommentar
Fra : Kristian Damm Jensen


Dato : 05-05-08 15:01

Michael Sørensen wrote:
> Jeg har 3 tabeller
>
> KLASSE
> Klasse, pk
> Budget
>
> VARE
> ID, pk
> Navn
> Beskrivelse
> Pris
>
> POSTERINGER
> ID, pk
> Dato
> Klasse, fk
> VareID, fk
> Antal
>
> Kan jeg i en grid få vist følgende oplysninger (en liste over køb i en
> enkelt klasse)
>
> - Klasse, dato, varenavn (ikke ID), antal, varens á pris, samlet pris
>
> Samt det samlede forbrug for klassen ved at lægge den samlede pris for
> samtlige linier for klassen sammen.

Du beder om både at få detaljer og summering i samme søgning. Det kan i
princippet ikke lade sig gøre. Men man kan kombinerer to søgninger til én og
fx lave

select klasse, dato, varenavn, antal, pris, pris*antal,
(select sum(antal*pris)
from posteringer p2
join klasse k2
on p2.klasse = k2.klasse
join vare v2
on v2.ID = p2.vareID
where k2.klasse = p.klasse
)
from posteringer p
join vare v
on v.id = p.vareID


--
Venlig hilsen /Best regards
Kristian Damm Jensen



Ukendt (05-05-2008)
Kommentar
Fra : Ukendt


Dato : 05-05-08 18:35

"Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
meddelelse news:481f1d2b$0$15895$edfadb0f@dtext01.news.tele.dk...
> Michael Sørensen wrote:
>> Jeg har 3 tabeller
>>
>> KLASSE
>> Klasse, pk
>> Budget
>>
>> VARE
>> ID, pk
>> Navn
>> Beskrivelse
>> Pris
>>
>> POSTERINGER
>> ID, pk
>> Dato
>> Klasse, fk
>> VareID, fk
>> Antal
>>
>> Kan jeg i en grid få vist følgende oplysninger (en liste over køb i en
>> enkelt klasse)
>>
>> - Klasse, dato, varenavn (ikke ID), antal, varens á pris, samlet pris
>>
>> Samt det samlede forbrug for klassen ved at lægge den samlede pris for
>> samtlige linier for klassen sammen.
>
> Du beder om både at få detaljer og summering i samme søgning. Det kan i
> princippet ikke lade sig gøre. Men man kan kombinerer to søgninger til én
> og fx lave

De to ovennævnte ting må gerne være adskilt for min skyld. de behøver ikke
blive vist sammen.

Kan man i øvrigt hente VARENAVN i stedet for VAREID, når det er VAREID, der
er gemt i tabellen POSTERINGER, mens det tilhørende VARENAVN er i tabellen
VARER.

> select klasse, dato, varenavn, antal, pris, pris*antal,
> (select sum(antal*pris)
> from posteringer p2
> join klasse k2
> on p2.klasse = k2.klasse
> join vare v2
> on v2.ID = p2.vareID
> where k2.klasse = p.klasse
> )
> from posteringer p
> join vare v
> on v.id = p.vareID

Kan jeg ikke få dig til at kommentere ovenstående, da jeg er faret vild -
allerede i 1. linie - selvom jeg har styr på simpel SQL.



Kristian Damm Jensen (05-05-2008)
Kommentar
Fra : Kristian Damm Jensen


Dato : 05-05-08 20:43

Michael Sørensen wrote:
> "Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
> meddelelse news:481f1d2b$0$15895$edfadb0f@dtext01.news.tele.dk...
>> Michael Sørensen wrote:
>>> Jeg har 3 tabeller
>>>
>>> KLASSE
>>> Klasse, pk
>>> Budget
>>>
>>> VARE
>>> ID, pk
>>> Navn
>>> Beskrivelse
>>> Pris
>>>
>>> POSTERINGER
>>> ID, pk
>>> Dato
>>> Klasse, fk
>>> VareID, fk
>>> Antal
>>>
>>> Kan jeg i en grid få vist følgende oplysninger (en liste over køb i
>>> en enkelt klasse)
>>>
>>> - Klasse, dato, varenavn (ikke ID), antal, varens á pris, samlet
>>> pris Samt det samlede forbrug for klassen ved at lægge den samlede pris
>>> for samtlige linier for klassen sammen.
>>
>> Du beder om både at få detaljer og summering i samme søgning. Det
>> kan i princippet ikke lade sig gøre. Men man kan kombinerer to
>> søgninger til én og fx lave
>
> De to ovennævnte ting må gerne være adskilt for min skyld. de behøver
> ikke blive vist sammen.

Godt. Det bliver også en betydelig enklere sql.

> Kan man i øvrigt hente VARENAVN i stedet for VAREID, når det er
> VAREID, der er gemt i tabellen POSTERINGER, mens det tilhørende
> VARENAVN er i tabellen VARER.

Ja. prøv at læse på "join".

>> select klasse, dato, varenavn, antal, pris, pris*antal,
>> (select sum(antal*pris)
>> from posteringer p2
>> join klasse k2
>> on p2.klasse = k2.klasse
>> join vare v2
>> on v2.ID = p2.vareID
>> where k2.klasse = p.klasse
>> )
>> from posteringer p
>> join vare v
>> on v.id = p.vareID
>
> Kan jeg ikke få dig til at kommentere ovenstående, da jeg er faret
> vild - allerede i 1. linie - selvom jeg har styr på simpel SQL.

Vi splitter den lige i to, som du selv foreslog:

Først den enkle del, der henter detaljeoplysninger fra posteringer.

select p.klasse, p.dato, p.antal, v.varenavn, v.pris, v.pris*p.antal
from posteringer p
join vare v
on v.id = p.vareID

Jeg kan næsten ikke kommentere dette, uden at skrive en grundbog i SQL. Det
er et join mellem to tabeller, stort set så simpelt som de forekommer. Det
hjælper dig muligvis, hvis jeg i stedet skriver den som:

select p.klasse, p.dato, p.antal, v.varenavn, v.pris, v.pris*p.antal
from posteringer p
, vare v
where v.id = p.vareID

Forskellen er rent syntaktisk.




Så kigger vi på summatation.

select klasse, sum(antal*pris)
from posteringer p2
join vare v2
on v2.ID = p2.vareID
group by klasse

Det bliver muligvis lidt lettere at gennemskue, hvis man først kigger på det
lidt simplere udtryk:

select sum(antal*pris)
from posteringer p2
join vare v2
on v2.ID = p2.vareID

Her findes den samlede pris for alt, hvad der er registreret i posteringer.
(vare er blandet ind i sagen, fordi det er her prisen står.)

--
Venlig hilsen /Best regards
Kristian Damm Jensen



Ukendt (05-05-2008)
Kommentar
Fra : Ukendt


Dato : 05-05-08 20:45

"Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
meddelelse news:481f6390$0$15893$edfadb0f@dtext01.news.tele.dk...
> Michael Sørensen wrote:
>> "Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
>> meddelelse news:481f1d2b$0$15895$edfadb0f@dtext01.news.tele.dk...
>>> Michael Sørensen wrote:
>>>> Jeg har 3 tabeller
>>>>
>>>> KLASSE
>>>> Klasse, pk
>>>> Budget
>>>>
>>>> VARE
>>>> ID, pk
>>>> Navn
>>>> Beskrivelse
>>>> Pris
>>>>
>>>> POSTERINGER
>>>> ID, pk
>>>> Dato
>>>> Klasse, fk
>>>> VareID, fk
>>>> Antal
>>>>
>>>> Kan jeg i en grid få vist følgende oplysninger (en liste over køb i
>>>> en enkelt klasse)
>>>>
>>>> - Klasse, dato, varenavn (ikke ID), antal, varens á pris, samlet
>>>> pris Samt det samlede forbrug for klassen ved at lægge den samlede pris
>>>> for samtlige linier for klassen sammen.
>>>
>>> Du beder om både at få detaljer og summering i samme søgning. Det
>>> kan i princippet ikke lade sig gøre. Men man kan kombinerer to
>>> søgninger til én og fx lave
>>
>> De to ovennævnte ting må gerne være adskilt for min skyld. de behøver
>> ikke blive vist sammen.
>
> Godt. Det bliver også en betydelig enklere sql.
>
>> Kan man i øvrigt hente VARENAVN i stedet for VAREID, når det er
>> VAREID, der er gemt i tabellen POSTERINGER, mens det tilhørende
>> VARENAVN er i tabellen VARER.
>
> Ja. prøv at læse på "join".
>
>>> select klasse, dato, varenavn, antal, pris, pris*antal,
>>> (select sum(antal*pris)
>>> from posteringer p2
>>> join klasse k2
>>> on p2.klasse = k2.klasse
>>> join vare v2
>>> on v2.ID = p2.vareID
>>> where k2.klasse = p.klasse
>>> )
>>> from posteringer p
>>> join vare v
>>> on v.id = p.vareID
>>
>> Kan jeg ikke få dig til at kommentere ovenstående, da jeg er faret
>> vild - allerede i 1. linie - selvom jeg har styr på simpel SQL.
>
> Vi splitter den lige i to, som du selv foreslog:
>
> Først den enkle del, der henter detaljeoplysninger fra posteringer.
>
> select p.klasse, p.dato, p.antal, v.varenavn, v.pris, v.pris*p.antal
> from posteringer p
> join vare v
> on v.id = p.vareID
>
> Jeg kan næsten ikke kommentere dette, uden at skrive en grundbog i SQL.
> Det er et join mellem to tabeller, stort set så simpelt som de forekommer.
> Det hjælper dig muligvis, hvis jeg i stedet skriver den som:
>
> select p.klasse, p.dato, p.antal, v.varenavn, v.pris, v.pris*p.antal
> from posteringer p
> , vare v
> where v.id = p.vareID
>
> Forskellen er rent syntaktisk.
>
>
>
>
> Så kigger vi på summatation.
>
> select klasse, sum(antal*pris)
> from posteringer p2
> join vare v2
> on v2.ID = p2.vareID
> group by klasse
>
> Det bliver muligvis lidt lettere at gennemskue, hvis man først kigger på
> det lidt simplere udtryk:
>
> select sum(antal*pris)
> from posteringer p2
> join vare v2
> on v2.ID = p2.vareID
>
> Her findes den samlede pris for alt, hvad der er registreret i
> posteringer. (vare er blandet ind i sagen, fordi det er her prisen står.)

Mange tak



Ukendt (05-05-2008)
Kommentar
Fra : Ukendt


Dato : 05-05-08 20:54

"Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
meddelelse news:481f6390$0$15893$edfadb0f@dtext01.news.tele.dk...
> Michael Sørensen wrote:
>> "Kristian Damm Jensen" <dNOamSPm.uAMsenet@kristiandamm.dk> skrev i en
>> meddelelse news:481f1d2b$0$15895$edfadb0f@dtext01.news.tele.dk...
>>> Michael Sørensen wrote:
>>>> Jeg har 3 tabeller
>>>>
>>>> KLASSE
>>>> Klasse, pk
>>>> Budget
>>>>
>>>> VARE
>>>> ID, pk
>>>> Navn
>>>> Beskrivelse
>>>> Pris
>>>>
>>>> POSTERINGER
>>>> ID, pk
>>>> Dato
>>>> Klasse, fk
>>>> VareID, fk
>>>> Antal
>>>>
>>>> Kan jeg i en grid få vist følgende oplysninger (en liste over køb i
>>>> en enkelt klasse)
>>>>
>>>> - Klasse, dato, varenavn (ikke ID), antal, varens á pris, samlet
>>>> pris Samt det samlede forbrug for klassen ved at lægge den samlede pris
>>>> for samtlige linier for klassen sammen.
>>>
>>> Du beder om både at få detaljer og summering i samme søgning. Det
>>> kan i princippet ikke lade sig gøre. Men man kan kombinerer to
>>> søgninger til én og fx lave
>>
>> De to ovennævnte ting må gerne være adskilt for min skyld. de behøver
>> ikke blive vist sammen.
>
> Godt. Det bliver også en betydelig enklere sql.
>
>> Kan man i øvrigt hente VARENAVN i stedet for VAREID, når det er
>> VAREID, der er gemt i tabellen POSTERINGER, mens det tilhørende
>> VARENAVN er i tabellen VARER.
>
> Ja. prøv at læse på "join".
>
>>> select klasse, dato, varenavn, antal, pris, pris*antal,
>>> (select sum(antal*pris)
>>> from posteringer p2
>>> join klasse k2
>>> on p2.klasse = k2.klasse
>>> join vare v2
>>> on v2.ID = p2.vareID
>>> where k2.klasse = p.klasse
>>> )
>>> from posteringer p
>>> join vare v
>>> on v.id = p.vareID
>>
>> Kan jeg ikke få dig til at kommentere ovenstående, da jeg er faret
>> vild - allerede i 1. linie - selvom jeg har styr på simpel SQL.
>
> Vi splitter den lige i to, som du selv foreslog:
>
> Først den enkle del, der henter detaljeoplysninger fra posteringer.
>
> select p.klasse, p.dato, p.antal, v.varenavn, v.pris, v.pris*p.antal
> from posteringer p
> join vare v
> on v.id = p.vareID
>
> Jeg kan næsten ikke kommentere dette, uden at skrive en grundbog i SQL.
> Det er et join mellem to tabeller, stort set så simpelt som de forekommer.
> Det hjælper dig muligvis, hvis jeg i stedet skriver den som:

Problemet med denne del var primært, at jeg ikke forstod, hvordan v og p
opstod og hvad de betød, men jeg har nu gennemskuet, at

from posteringer p
og
join vare v

definerer p og v som forkortelser for de to tabeller?

> select p.klasse, p.dato, p.antal, v.varenavn, v.pris, v.pris*p.antal
> from posteringer p
> , vare v
> where v.id = p.vareID
>
> Forskellen er rent syntaktisk.

Og denne omskrivning hjalp mig også meget med forståelsen. Jeg kendte kun
sidstnævnte SQL syntaks.

> Så kigger vi på summatation.
>
> select klasse, sum(antal*pris)
> from posteringer p2
> join vare v2
> on v2.ID = p2.vareID
> group by klasse
>
> Det bliver muligvis lidt lettere at gennemskue, hvis man først kigger på
> det lidt simplere udtryk:
>
> select sum(antal*pris)
> from posteringer p2
> join vare v2
> on v2.ID = p2.vareID
>
> Her findes den samlede pris for alt, hvad der er registreret i
> posteringer. (vare er blandet ind i sagen, fordi det er her prisen står.)

Mit problem her var igen p2 og v2, men jeg går ud fra, at det igen er
definering af forkortelser for tabelnavne og så blot for at kalde dem noget
andet end ovenfor

Endnu engang tak - nu fik jeg forståelsen



Søg
Reklame
Statistik
Spørgsmål : 177578
Tips : 31968
Nyheder : 719565
Indlæg : 6409072
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste