Ved ikke om det er det rigtige jeg har gjort, men på selve sql-serveren har jeg trukket en kolonne, fra en table, og på en anden kolonne, i en anden table og på den måde skabt et relationship mellem de to tabeller. Er det det samme som join eller har jeg lavet noget helt hen i vejret???
Hvilken version af SQL-Server har du? Beskriv nærmere hvordan du har lavet det "relationship" du snakker om.
Det lyder som om du har oprettet en Foreign Key, dvs. et index der definerer en forbindelse mellem to tabeller, og som kan sikre at der altid findes relaterede data. Man kan for eks. i en butik sørge for at en vare ikke kan slettes hvis den findes i en ordre, fordi ordren i givet fald ville blive ulæselig. Dette er ikke et JOIN, trods det at det ofte handler om de samme forbindelser mellem data som man vil joine på.
At joine tabeller er noget man gør i sine SELECT statements, som arne_v skitserer det.
Jeg bruger MS sql 2000 server. Jeg har 3 tabeller som håndtere vare nogen af kolonnenavnene går igen i de forskellige tabeller, jeg har sat et par af kolonnerne som primær nøgler og lave en form for drag 'n' drop på de kolonner som hedder det sammen og der med er der skabt en relation.
Jeg har søgt hjælp på selve serveren og fik det er ud af det.
Joining Tables Manually When you add two (or more) tables to a query, the Query Designer attempts to join them based on common data or on information stored in the database about how tables are related. For details, see Joining Tables Automatically. However, if the Query Designer has not joined the tables automatically, or if you want to create additional join conditions between tables, you can join tables manually.
You can create joins based on comparisons between any two columns, not just columns that contain the same information. For example, if your database contains two tables, titles and roysched, you can compare values in the ytd_sales column of the titles table against the lorange and hirange columns in the roysched table. Creating this join would allow you to find titles for which the year-to-date sales falls between the low and high ranges for the royalty payments.
Tip Joins work fastest if the columns in the join condition have been indexed. In some cases, joining on unindexed columns can result in a slow query. For information about creating indexes using the Visual Database Tools, see Indexes.
To manually join tables or table-structured objects
Add to the Diagram pane the objects you want to join.
Drag the name of the join column in the first table or table-structured object and drop it onto the related column in the second table or table-structured object. You cannot base a join on text, ntext, or image columns. Note The join columns must be of the same (or compatible) data types. For example, if the join column in the first table is a date, you must relate it to a date column in the second table. On the other hand, if the first join column is an integer, the related join column must also be of an integer data type, but it can be a different size. The Query Designer will not check the data types of the columns you use to create a join, but when you execute the query, the database will display an error if the data types are not compatible.
If necessary, change the join operator; by default, the operator is an equal sign (=). For background, see Join Comparison Operators. For details, see Modifying Join Operators. The Query Designer adds an INNER JOIN clause to the SQL statement in the SQL pane. You can change the type to an outer join. For details see Creating Outer Joins.
Jeg forstår ikke hvad dit problem er, men jeg kan da gætte:
Du vil lave et view, så du går ind i Enterprise Manager, og vælger New View. Så tilføjer du nogle tabeller, og idet de dukker frem dannes der nogler joins, men de er forkerte.
Eller du forventer at der dannes joins, men det gør der ikke.
egentlig ikke ;o), jeg er igang med at lave en webshop og skal lave en join af tre tabeller, men kan ikke finde ud af det. Søgte på det i Enterprise Manager og ffandt den tekst som jeg har postet 22/03-2006 17:32:00.
Så lad os se hvilke tre tabeller det er, så skal vi hjælpe dig med at joine dem. Hvilke primærnøgler er der, og hvilke felter skal være fremmednøgler, dvs. hvilke skal joinet pege på?
Automatiske Joins dannes når man tilføjeg tabeller til et view, hvis MSSQL kan finde noget at joine på. Men det var det jeg spurgte til 23/03-2006 09:04:42, og det er åbenbart ikke det du vil. Jeg forstår stadig ikke hvad det er du vil. Du slipper ikke for at JOIN'e tabellerne i SQL'en, men du kan få hjælp til det på den måde jeg nævnte.
Ang tabellerne: De mangler åbenbart alle primærnøgler, det skal du have ordnet. Og så skal du lige forklare mig hvad meningen er: shop_varer indeholder alle varer (som kunne være sko), og i shop_storrelse angives de forskellige størrelser for en given vare, samt hvor mange der er af den
Så de to kan joines sådan:
SELECT * FROM shop_varer INNER JOIN shop_storrelse ON shop_varer.VareID = shop_storrelse.VareID
Primær nøgler´, bruger man også det når man skal lave en join? Mine tre tabeller hænger sådan her sammen.
Shop_varer indeholder alle vare og der får de deres ID. Shop_varer_str_ref er en reference table. Alle varer skal kunne se i flere undergrupper. Men eftersom at en vare kun skal have et ID så måtte jeg lave en table der holder styr på hvilke vareID'er der ligger i hvilke undergrupper og hvilket undergruppeID de også har. Shop_storrelser, ja den siger jo sig selv, den holder styr på hvilke vare har der kan fåes i hvilke størrelser og da varerene kun kan have et vareID skal der jo en table til at holde styr på det.
Håber det er forklaring nok til at du kan forstå have det er mine tabeller gør.
Alle tabeller skal have en primær nøgle, det har ikke noget at gøre med om du joiner eller ikke.
Et join er ikke noget du laver fast mellem tabellerne, sådan at to tabeller kommer til at hænge sammen. Et JOIN er betegnelse for den måde du SELECT'er data på, når det er relatedede data, som i din situation.
Hvis jeg vil se hvilke størrelser jeg kan få varen med VareID 25 i:
SELECT strVarenavn, intStoerrelse FROM shop_varer INNER JOIN Shop_storrelser ON shop_varer.VareID = Shop_storrelser.VareID WHERE VareID = 25
Resultatet vil, hvis der nu er syv størrelser, være noget der ligner:
Hvis du vil se hvilke varer der er i en undergruppe vil du gøre noget tilsvarende med Shop_varer og Shop_varer_str_ref.
Primærnøgler og fremmednøgler kommer ind i sagen af performance grunde. Du vil nemlig næste altid bruge primærnøglen fra den ene tabel som den ene ende af join'et, her VareID i tabellen Shop_varer. Den anden ende af joineter derimod ikke en primærnøgle, men hvis du registrerer det felt der bruge som en fremmednøgle, så vil det gøre ydelsen meget bedre. Og det er måske det du har gjort med de streger du snakkede om at du trak.
Jeg ville ønske du ville fortælle hvordan det var du lavede dem, så kan jeg fortælle hvad det var du gjorde.
Idanielsen, jeg skal lige love for jeg er blevet en del klogere her i weekenden. Jeg valgte at bruge 4 timer på at fordybe mig i min SQL server's help guide og har læst mere end jeg nogensinde gjorde i folkeskolen.
Det jeg har fundet ud af er at man kan lave et view i selve databasen, det er der en wizard der kan lave for en, ved at man fortæller den hvilken tabeller den skal kigge i og hvilke kolonner i disse, derefter skal man selv kort lave en WHERE sætning. Ud fra det danner Enterprise Manager to SQL strenge. Den ene med hele joinet i og en "bare" et viewet som også er en SQL streng. Man kan så selv vælge hvilken man vil bruge, jeg vælger at bruge den til viewet og den ser sådan her ud:
SELECT * FROM shop_varer_VIEW
Den SQL streng hvor man har join, inner join og hvad man nu ellers kan bruger vil for mit vedkommende se sådan her ud:
Og det er løsningen på mit spørgsmål, et automatisk JOIN. Nu ved jeg så bare ikke om jeg bliver upopulær ved at sige jeg ikke mener I skal have point på det her spørgsmål. Jo I har hjulpet mig lidt, men kommet med svar på en automatisk JOIN har I ikke.
Jeg vælger at vente med at afslutte det her spørgsmål til jeg har hørt jeres reaktion.
Næ jeg mener heller ikke der er forskel på join i sql på en ASP side eller på selve serveren, men det jeg ledte efter var hvordan man gør det automatisk. Og ved at gøre det i view på serveren så er det stort set at gøre det automatisk.
Ja, du bliver lidt upopulær, især når du har taget pointene selv i 27 af de 46 spm. du har stillet. Jeg ved godt at du er "fattig" på point, men hvis det er derfor, så sig det, i stedet for at sige at du ikke har fået et ordentligt svar.
I øvrigt skal du også lige huske at svare på de spørgsmål svarerne stiller, for det kan godt være svært at forstå hvad spm. drejer sig om.
Jeg har hele vejen forsøgt at forstå hvad du mener, har spurgt til om vi taler om de joins der automatisk fremkommer i Query designer. Se Kommentar: ldanielsen, 23/03-2006 09:04:42
Det er den eneste form for automatiske joins der kan være tale om, og da det ikke var det det handlede om antog jeg at det emne var uddebateret.
Automatiske joins er ikke en feature som du kan regne med, for du skal altid checkke at de er rigtige alligevel. De sparer dig blot for et par museklik.
Jeg mener at du har fået en del mere end du spurgte om. Blot er du måske skuffet over at det ikke kan gøres så let og automatisk som du troede.
Jeg kan udemærket følge dig i hvad du mener og ja jeg kan godt se at jeg ikke har fået svaret jer så I kunne komme tættere på en forståelse af hvad jeg mener og hvad jeg skal have hjælpe til.
Jeg har sådan set og så besluttet mig for at give jeg 30 point hver da jeg i en eller anden form at spildt jeres tid, også selv om arne_v har givet udtryk for at han ikke skal have point.
Så lig et svar, begge to.
PS. jeg skal senere i aften komme med en beskrivelse for hvad det var jeg søgt hjælpe til.
Den beskrivelse skal ikke lave for min skyld, kun hvis du selv synes.
Synes godt om
Ny brugerNybegynder
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.