MsSql View viser ikke ønskede dataudtræk

Tags:    mssql views keys relations

Hej Udviklere

Jeg sidder med et større projekt, hvor jeg bruger en MsSql DB.

Jeg har fået en udfordring med relationen imellem to tabeller, når jeg laver et View.

Relationen er sådan:
TableA har to foreign keys til TableB's primary key.
-Det er muligvis her, at jeg har fucket op i min normalisering.
Grunden til dette design valg - er TableB's records kan være opdelt i sæt, hvor hver "kun" kan være i et.

TableA har 2 rows (primary_id, secondary_id)
begge foreign keys til TableBs primary key.

Når jeg så laver det view, der viser TableA id + "navn" på
primary_id og secondary_id, ved at med tage "navn" fra TableB.
Viser mit dataudtræk intet.

Det gøres ved en INTER_JOIN i Microsoft SQL SMS:
Andre Dataudtræk fungere som det skal - indtil jeg får medtaget
TableA og TableB. Hver for sig fungere alt.

Mine egne tanker at fejlen ligger i designet, da det er ved den relation fejlen opstår. Dog synes jeg ikke det vil give mening at oprette 2 tables mere, der "bare" videre føre oplysningerne fra TableB til TableA.


Håber at denne lange smøre giver mening.

//Kasper






3 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hej Kasper,
hvis du har mulighed for at vise noget af udtrækket ville det lette det lidt.

Men altså, når du skriver inter join, så mener du inner join vel. Når data ikke dukker frem, når du joiner, så betyder det jo enten, at du joiner på det forkerte, eller data ikke er korrekt i de(n) du joiner på..
Bekymrer mig også at du skriver tablea har to rows, og omtaler dem med primaryid .. går ud fra du her mener kolonner / attributter.

Lyder som om du burde stå med noget sql der ser a la dette ud:
SELECT a.name, b.othername FROM tableA A INNER JOIN tableb b ON a.primaryid = b.id AND a.secondaryid = b.id

Jeg mangler selvsagt noget, men nu engang sådan jeg kan læse det ud fra din beskrivelse... men forhåbentlig ikke sådan du skal løse det :)




TableA har to foreign keys til TableB's primary key.

Det er sjældent dette skulle være nødvendigt, og når det er, så er der tit mere "brugervenlige" måder at gøre det på.

Må man se et udsnit af dine tabeller?



Jeg takker for, at I gad at læse en noget ringe skrevet post igennem.


Men altså, når du skriver inter join, så mener du inner join vel.


Jeg mener self. INNER JOIN og ikke INTER JOIN.

Til projektet bruger jeg Mircosoft SQL Management Studio til at designe og udarbejde alt SQL (Stored Procedures, View, Diagrammer mm.)

Hvilket har virket rigtig fint, da jeg kan ændre i Querys efter behov.
Når jeg bruger Management Studio til at lave Views, kan jeg lave dem, jeg ønsker - med undtagelsen af de 2 tables.

Kode for min "tableB" taget ud fra et Query script i Management Studio
Fold kodeboks ind/udSQL kode 


Kode for min "tableA"
Fold kodeboks ind/udSQL kode 


Først havde jeg to tables mere, 1 til at "holde" på Host_primary og 1 anden til at "holde" på Host_secondary.

Men igen de Querys ovenfor at taget fra "script table as" CREATE TO.

Til sidst får I så lige mine så kaldte IN(T)ER join.

Den første er med Server_set og System, hvilket giver et ønskede data udtræk.
Fold kodeboks ind/udSQL kode 


Den næste er med de 2 tabler der giver et tomt data udtræk.
Fold kodeboks ind/udSQL kode 


Igen en lang smøre - håber dog at dette giver bedre mening.

//Kasper






Indlæg senest redigeret d. 28.09.2011 08:42 af Bruger #16759
t