Avatar billede sun Nybegynder
27. november 2003 - 15:35 Der er 15 kommentarer og
1 løsning

Database SQL

Dette er flytte spørgsmål, da der ikke er nogle som svare i den anden kategori http://www.eksperten.dk/spm/430155!

Ok, dette bliver ikke let at forklare, jeg er kommet frem til hvordan det ca., skal gøres men jeg kan ikke tænke mig helt til det sidste.

Jeg har 3 tabels "Freelance personale" "arrangementet" og  "Crossfield" som har relationer til de 2 første ID´s

Det jeg skal havde lavet nu i asp, er en list over alle Freelance men dem som der er relationer til i crossfield til det arrangementet man under, skal ikke vise eller havde en anden color hvis efter hvad for en status det har i crossfield!

Det er let at få den til at vise hele listen over Freelance personale, og jeg har også fundet ud af at lave  INNER JOIN som kun viser mig dem som har relationer i crossfield, men hvordan tager jeg dem fra den anden liste eller laver deres color om?

Håber i med /sun
Avatar billede powell Nybegynder
27. november 2003 - 16:02 #1
Du skal havde tre tabeller:
tbl 1: Freelance
tbl 2: Arrangementer
tbl 3: Crossfield

I tbl 1 skal du havde følgende felter:
ID, Freelance telefonnr, navn, job mm
I tbl 2 skal du havde hvad arregementerne har brug for, så som, job beskrivelse, antal freelance arbejdere de søger plus et ID m.m.
I tbl 3 skal du kun havde de oplysninger om de personer der er koblet til et arr. (Det vil soge IDfreelancer, IDArrangement, løn, mm) Du behøver ingen status da de kun behøver at stå her til det arr.

Det vil kort sagt sige at der skal oprettes freelancere kun i freel.tbl'en og arrangementerne kun i arr.tbl'en. En rutine henter derved automatisk de personer over der tilkobles et projekt. Og de der siger nej-tak bliver ikke overført til crossfielden.

Nu skulle der være forholdsvis nemt at hive dem ud der er nødvendige:
De der er tilkoblet et projekt:
SELECT free.ID, free.navn, arr.type, arr.varighed, cross.loen FROM freelancer free, arrangement arr, crossfield cross WHERE arr.ID = cross.arrID AND free.ID = cross.IDfree
Avatar billede sun Nybegynder
27. november 2003 - 16:45 #2
Hej powell! Det er lige det jeg har lavet, de 3 tbl, men jeg skal havde en status fordi at en person kan sig nej, skal den blive rød på listen, og en person som har sagt "måske/vender tilbage/telfonsvare" skal ikke vise mere på listen og vise et andet sted, som måske ender med det bliver et ja eller nej, dem der siger ja skal eller ikke vises der mere!

Så det jeg skal vide er hvor jeg tager alt fra freelance tbl, og da man er under arrangementet ved jeg godt det ID, så jeg skal ikke bruge noget fra den tbl, men jeg kan ikke tage dataene ud så jeg for alle Freelance og deres status i Crossfield hvis de er der, og hvis de ikke er der for jeg ikke noget for den persons status! eller er det fordi jeg skal lave 2 open  con?!

Du for lige noget af den kode jeg kommet frem til, tbl har nogle andre navn i databasen

SELECT tbMedarbejdere.FirstName, tbARRlinkMED.*, *
FROM tbMedarbejdere INNER JOIN tbARRlinkMED ON tbMedarbejdere.UserID = tbARRlinkMED.IDMed
WHERE (((tbARRlinkMED.IDARR)=##her skal stå arrangementer man er på id##))
ORDER BY tbMedarbejdere.FirstName;

Det give mig alle dem som er i tbARRlinkMED (Crossfield) navne og status under det arrangementer man er på!

SELECT tbMedarbejdere.*
FROM tbMedarbejdere
ORDER BY tbMedarbejdere.FirstName;

Denne give mig alle freelancer!

Men det jeg ville havde ud er alle freelancer + hvis de er i tbARRlinkMED deres status der! Eller kan man ikke det?
Avatar billede powell Nybegynder
28. november 2003 - 09:35 #3
I så fald tror jeg at vi skal lave 4 tabeller. (blot for dynamikkens skyld)

tbl 1: Freelancerne og alle deres data inkl. ID
tbl 2: Arrangemenderne plus ID
tbl 3: Crossfielden indeholdene FreeID, ArrID, StatusID, evtLøn
tbl 4: ID, Ja, Nej, Måske, o.s.v.

Derfor kan du stadig nøjes med at lave en forespørgsel.

Her er så forespørgslen hvis du ønsker at se hvilke der er tilkoblet et givent arrangement, og evt status på de andre.

SELECT f.*, a.*
FROM freelancer f, arrangement a, crossfield c, status s
WHERE ##ArangementID## = c.ArrID AND
f.ID = c.freeID AND
s.ID = c.statusID
Avatar billede powell Nybegynder
28. november 2003 - 09:37 #4
Hvis du smider en email, så skal jeg sende dig et diagram over databasen, hvordan den bør se ud.
Avatar billede sun Nybegynder
03. december 2003 - 10:01 #5
Hey Powell, har lige være på ferie så har først set dit svar idag!

Jeg vil lige teste det, når jeg får tid, men du må meget gerne sende diagram hvis det er let for dig.. :)
Avatar billede powell Nybegynder
03. december 2003 - 10:06 #6
smider du lige en e-mail :-) Eller en MSN messenger profil
Avatar billede sun Nybegynder
03. december 2003 - 10:27 #7
Sorry, =)
johancassias@hotmail.com
Avatar billede sun Nybegynder
05. december 2003 - 12:28 #8
Hey Powell, der er lige gået lidt tid før jeg kan kunne teste det!
Jeg har lavet den 4. tbl og rette det du har skrevet til mine navne, måske er det her min fejl er, for jeg få kun de Freelancere  som er tilslutte Arrangementerne ca. 17 gang med de samme info, og så ikke helt! jeg er helt lost over hvad det er jeg får men det er ikke alle Freelanceren + hvis der er deres tilslutteting til Arrangementerne og status!

Mine navn er ikke de samme (og jeg kan godt eller ikke så smarte) men her er den lavet om:
SELECT tbMedarbejdere.*, tbArrangementer.*
FROM  tbMedarbejdere,  tbArrangementer, tbARRlinkMED, tbsvar
WHERE 2  = tbARRlinkMED.IDARR AND
tbMedarbejdere.UserID =  tbARRlinkMED.IDMed AND
tbsvar.IDsvar = tbARRlinkMED.ALsvarID

Jeg ved ikke helt hvad du skal vide for at kunne se hvad der er galt, men så skal du få det M.v.h Johan
Avatar billede sun Nybegynder
05. december 2003 - 12:31 #9
"Where 2 =" Er kun fordi jeg lige tester på det id  Arrangemenderne!
Avatar billede powell Nybegynder
05. december 2003 - 13:58 #10
Prøv nedenstående:
SELECT DISTINCT tbMedarbejdere.* M, tbArrangementer.* A
FROM  tbMedarbejdere M,  tbArrangementer A, tbARRlinkMED AR, tbsvar SV
WHERE AR.IDARR = 2 AND
M.UserID = AR.IDarr AND
M.ID = AR.IDMed AND
SV.ID = AR.ALsvarID

Du mangler relationen mellem arrangement og tbARRLink tabelen.
Avatar billede sun Nybegynder
05. december 2003 - 15:05 #11
Har rette den til:
SELECT DISTINCT tbMedarbejdere.*, tbArrangementer.*
FROM tbMedarbejdere, tbArrangementer, tbARRlinkMED, tbsvar
WHERE tbARRlinkMED.IDARR=2
And tbArrangementer.ARRID=tbARRlinkMED.IDarr
And tbMedarbejdere.UserID=tbARRlinkMED.IDMed
And tbsvar.IDsvar=tbARRlinkMED.ALsvarID;

Men denne give mig jo kun de folk der er med, den er den samme som, den jeg selv skrev i starten!

SELECT tbMedarbejdere.FirstName, tbARRlinkMED.*, *
FROM tbMedarbejdere INNER JOIN tbARRlinkMED ON tbMedarbejdere.UserID = tbARRlinkMED.IDMed
WHERE (((tbARRlinkMED.IDARR)=##her skal stå arrangementer man er på id##))
ORDER BY tbMedarbejdere.FirstName;

eh, jeg ved ikke helt, om jeg har skrevet godt nok hvad det vi skal finde frem til?
Avatar billede powell Nybegynder
05. december 2003 - 15:10 #12
Har du mulighed for at maile mig din database og din kode? Så vil jeg lige kikke den efter i sømmene, så kan jeg muligvis nemmere supportere dig.
Avatar billede sun Nybegynder
08. december 2003 - 14:57 #13
Jeg skal lave en left join, og en where men null og min arrangemente id.

Jeg tror jeg gå væk fra det du siger med at lave en tbl til Status  da den kun være en af tingen af gangen kan jeg ikke se nogle grund til at lave det på den måde!
SELECT tbMedarbejdere.*, tbARRlinkMED.*
FROM tbMedarbejdere LEFT JOIN tbARRlinkMED ON tbMedarbejdere.UserID = tbARRlinkMED.IDMed
WHERE tbARRlinkMED.IDARR  = #her skal stå arrangementer man er på id# OR  tbARRlinkMED.IDARR is null
ORDER BY tbMedarbejdere.FirstName;

Jeg tror dette er svare!
så den kommer til at se sådan ud!
Avatar billede powell Nybegynder
08. december 2003 - 17:30 #14
Hej Sun,

Jeg har fundet en mindre fejl i din database, en fejl jeg er skyld i.

I din tbSvar da skal tabellen indeholde:
ID og Status

i status da skal der være Ja, Nej, Måske
Avatar billede powell Nybegynder
09. december 2003 - 08:32 #15
Har forsøgt at sende dig databasen retur med ændringer og en forespørgsel der kan give dig hvem der har svaret tilbage ang. et arrengement og hvad de har svaret. Men den gik ikke igennem, vil prøve igen når jeg kommer hjem i morgen.
Avatar billede sun Nybegynder
02. januar 2004 - 19:19 #16
jeg har ikke fået det til at virke rigtig og nu laver jeg det på en anden måde, men få points for alt den hjælp.

=)
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

IT-JOB

Rambøll Management Consulting

Senior Software Engineer

Capgemini Danmark A/S

Open Application (Denmark)

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Solution Manager til Cyberdivisionen