Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:21 Der er 24 kommentarer og
1 løsning

problem, pga. STOR db...

Nå, lidt svært at forklare, men...
Jeg har en db, med varer hvori der er et felt kaldet "producent" dette felt indeholder ofte samme data... Jeg skal så have listet alle producenter, naturligvis uden at de gentages hele tiden, dette er ikke noget problem at ordne. Mit problem består i at for at liste producenterne skal jeg loope samtlige 15-20.000 records igennem... Hvordan undgår jeg dette???
Avatar billede arriva Nybegynder
24. februar 2002 - 00:24 #1
du laver en ny tabel som du kalder f.eks. producenter, så skriver du i din anden tabel f.eks. 1, 2 eller whatever foren producent id det er...
Altså giver du hver producent et Id nummer, så står de kun listet en gang i en tabel....
Avatar billede invisibleman Nybegynder
24. februar 2002 - 00:24 #2
Du kan lave et DISTINCT select .. hvilken database bruger du ?
Avatar billede erikjacobsen Ekspert
24. februar 2002 - 00:25 #3
Du skal vel have en tabel med producenter (med id, navn etc),
og så i varetabellen kun referere til producentens id.
Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:29 #4
MySQL-db...
Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:30 #5
arriva > jeg er netop ude på at undgå en ny tabel...
Avatar billede erikjacobsen Ekspert
24. februar 2002 - 00:33 #6
Du skal ikke undgå en ny tabel. Du skal lave det ordentligt.
Man kan godt fifle rundt for sjov med små og få data til
eget brug, men når du skal gøre det professionelt, og
formentlig tager penge for det, kan du ikke tillade dig at
levere en amatørløsning.

Hvad kender du til databaseteori?
Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:41 #7
erikjacobsen > Du har naturligvis ret, men det ligger nu en gang sådan at jeg ikke har kunnet overbevise ham jeg laver siden for om at han skal lave om på den måde han taster data ind i databasen på, og derfor vil det besværliggøre hans daglige arbejde meget at skulle lave en ekstra tabel...
Hvad mener du med databaseteori?
Avatar billede arriva Nybegynder
24. februar 2002 - 00:43 #8
Det er vel bare at lave en dropdown menu hvor man kan vælge producent?
Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:45 #9
arriva > ja, hvis det var via et system jeg havde lavet at han opdaterede db'en...
Avatar billede erikjacobsen Ekspert
24. februar 2002 - 00:46 #10
Strukturen af databasen har da intet at gøre med den måde
der indtastes på i brugergrænsefladen. Min anbefaling er at du
følger et kursus i databaser - engang...
Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:47 #11
ericjacobsen > jo, når han foretrækker at indtaste data direkte i db'en...
Avatar billede mikkelk Nybegynder
24. februar 2002 - 00:50 #12
Kan det lade sig gøre at lave noget der virker eller ej og hvordan? Det var sådan set bare spørgsmålet........
Avatar billede erikjacobsen Ekspert
24. februar 2002 - 00:52 #13
Nå, forslaget fra invisibleman virkede ikke ???
Avatar billede erikjacobsen Ekspert
24. februar 2002 - 00:55 #14
Han mener:

  select distinct producent from dintabel

Jeg har lige lavet én på en tabel med mere end 100.000 poster,
på min langsomme bærbare, og det tog 1.22 sek.
Avatar billede viperfx102 Nybegynder
24. februar 2002 - 00:56 #15
Vil også gi' arriva og erikjacobsen ret! Du skal kigge lidt på normalisering af din db! evt. prøv at læse følgende der kan kan du få et indtryk af hvad det drejer sig om! http://www.hedeskov.dk/netpublikationer/udv-database/kap3/kapitel3.htm
Avatar billede zeptic Nybegynder
24. februar 2002 - 09:48 #16
Jeg vil foreslå at du laver et index på producent, og så benytter dig af erikjakobsens query: select distinct producent from dintabel
Husk blot, at hvis du jævnligt opdaterer databasen at du skal opdatere indexet.
Avatar billede mikkelk Nybegynder
24. februar 2002 - 10:12 #17
Jeg er udemærket klar over at det ikke er en optimal løsning, og det er såmænd heller ikke noget jeg normalt ville lave, men når nu dem jeg arbejder for vil have det på den måde, så laver jeg det på den måde...
I et hvert andet tilfælde ville jeg naturligvis gøre som i(erikjacobsen og viperfx102) har forslået, og det var da også hvad jeg i første omgang forsøgte at overbevise min chef om...

Men anyway... Mange tak for hjælpen alle sammen...
Avatar billede pcmike Nybegynder
24. februar 2002 - 10:41 #18
Hvis jeg har forstået problemmet rigtigt, skal du bare have en liste over alle producenter ud fra din vare tabel, uden absolut at skulle løbe dem alle igennem.

Brug følgende SQL-sætning
"SELECT * FROM Vare GROUP BY Producent
Avatar billede mikkelk Nybegynder
24. februar 2002 - 10:53 #19
pcmike > øh, nej... så bliver for jeg en liste på 15000 producenter, hvor de fleste af dem er ens...
Avatar billede pcmike Nybegynder
24. februar 2002 - 12:58 #20
Hvormange vare indeholder din liste
Avatar billede mikkelk Nybegynder
24. februar 2002 - 13:04 #21
pcmike > Jeg har fået svar ;-) Men min liste indeholder 15 - 20000 varer fordelt på måske 50 producenter... Løsningen var "select distinct producent from dintabel"

Erikjacobsen > hvis du ønsker point, bedes du liige oprette et svar...
Avatar billede erikjacobsen Ekspert
24. februar 2002 - 13:06 #22
det var nu ikke min løsning, så, nej tak
Avatar billede mikkelk Nybegynder
24. februar 2002 - 13:08 #23
erikjacobsen > det er også rigtigt ;-) Det var natürlich invisibleman... invisibleman > Så hvis du ønsker point skal du bare lige svare...
Avatar billede mikkelk Nybegynder
16. januar 2004 - 16:05 #24
ingen "svar"... Men tak for hjælpen!
Avatar billede -mundi- Nybegynder
16. januar 2004 - 16:08 #25
husk at smide et index på din tabel, det gør inserts lidt langsommere, mens søgehastigheden optimeres
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
Kurser inden for grundlæggende programmering

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