Avatar billede md_craig Nybegynder
21. december 2006 - 11:10 Der er 4 kommentarer og
1 løsning

Select på Tabel a med Count fra Tabel B og C relateret.

Det er åbenbart ret lang tid siden jeg har arbejdet meget med SQL (T-SQL for den sags skyld)...

Jeg har 3 tabeller. som indehodler lidt forskellig data.

Tabel A kan ses som "hoved tabel" som indeholder "dokumenter". B og C indeholder så begge ti Linier der relateret til et dokument.

B Indeholder "normal linier" og C indeholder "Specielle linier"...

Nu vil jeg så gerne lave en Oversigt over alle Dokumenter som også indeholder et antal linier.

Burde være nok at vide at:

A:
- ID
- TITEL

B:
- ID
- fkAID
- CAPTION
- ... Data Rows.

C:
- ID
- fkAID
- CAPTION
- ... Data Rows.
- ... Unit Rows.
Avatar billede teepee Nybegynder
21. december 2006 - 11:46 #1
Hvad skal der i oversigten? Og er det et bestemt antal linier eller bare mere end 0?
Avatar billede md_craig Nybegynder
21. december 2006 - 17:48 #2
Ja altså det antal linier der er relateret til dokumentet...

Så når der er indhold som:

A
1 : DOKA
2 : DOKB

B
1 : 1 : LINA_DOKA : ...
2 : 1 : LINB_DOKA : ...
3 : 1 : LINC_DOKA : ...
4 : 2 : LIND_DOKB : ...
5 : 2 : LINE_DOKB : ...

C
1 : 1 : LINA_DOKA : ... : ...
2 : 1 : LINB_DOKA : ... : ...
3 : 1 : LINC_DOKA : ... : ...
4 : 2 : LIND_DOKB : ... : ...
5 : 2 : LINE_DOKB : ... : ...
6 : 2 : LINF_DOKB : ... : ...

Så har oversigten (som bliver et view)

1 : DOKA : 6
2 : DOKB : 5

Hvor de sidste tal er total antal linier der hører til dokumentet
Avatar billede teepee Nybegynder
22. december 2006 - 08:54 #3
Dette er et uafprøvet gæt:
select id, titel, sum(select count(*) from b where a.id = b.fkaid
                      union all
                      select count(*) from c where a.id = c.fkaid)
from a
Avatar billede md_craig Nybegynder
22. december 2006 - 12:09 #4
Det er desvære ikke så simpelt... har jeg nemlig prøvet...

Jeg kan sådan set godt få det lavet sådan at jeg kan Tælle antal Linier i en af de 2 tilhørende tabeller... og laver jeg et extra View kan jeg faktisk også få det til at du...

MEN... det extra view må ikke ligge og rode... derfor skulle jeg se om jeg ikke kunne få pakket det end i et enkelt view...

Men det kan lade sig gøre hvis man:

View: BC
SELECT B.ID, B.fkAID FROM B
  UNION
SELECT C.ID, C.fkAID FROM C

View Oversigt:
SELECT A.ID,A.TITEL, COUNT(BC.ID) AS Lines
FROM A
  INNER JOIN BC ON BC.fkAID = A.ID
GROUP BY (A.ID,A.TITEL)
Avatar billede md_craig Nybegynder
15. februar 2007 - 18:30 #5
Nå men det kom til at blive det extra View som jeg sikkert bliver irriteret på hver gang jeg ser det... men sådan er det :S
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester