06. december 2002 - 23:04Der er
8 kommentarer og 1 løsning
et join over 4 tabeller hvori kun de 3 indgår
Hej!
ye subj lyder mærkeligt og det synes jeg oz mig spørgsmål er for jeg ka simpelthen ikke finde ud af det :/
Jeg har 4 tabeller:
create table eksemplartype ( eksemplartypeID int not null, titel varChar(1000) not null, udgivelsesaar smallint not null, udlejningspris float(2), bemaerkninger varChar(1000), genre varChar(1000) not null, indkoebspris float(2) not null, constraint typeIDPK primary key (eksemplartypeID) );
create table eksemplar ( eksemplarID varChar(13) not null, stand smallint default 1, dato Char(20) not null, erUdlejet smallint default 0, kanUdlejes smallint default 1, eksemplartypeID int not null, constraint eksIDPK primary key (eksemplarID), constraint eksTypeIDFK foreign key (eksemplartypeID) references eksemplartype );
create table udlejningsspil ( udlejningsspilID int not null, konsol varChar(1000) not null, producent varChar(1000) not null, constraint udlejningsspilIDPK primary key (udlejningsspilID), constraint udlejningsspilIDFK foreign key (udlejningsspilID) references eksemplartype );
create table udlejningsfilm ( udlejningsfilmID int not null, instruktoer varChar(1000) not null, hovedrolleindehaver varChar(1000) not null, constraint udlejningsfilmIDPK primary key (udlejningsfilmID), constraint udlejningsfilmIDFK foreign key (udlejningsfilmID) references eksemplartype );
Mit problem er at jeg vil finde et udlejningsspil eller en udlejningsfilm ud fra eksemplarID. Dvs. jeg ska joine tabellerne where eksemplarID = "et eller andet ID" AND eksemplartype.eksemplartypeID = eksemplar.eksemplartypeID AND ... og det er her jeg står af. For jeg skal joine over enten udlejningsspil eller udlejningsfilm. Hvis udlejningsspilID = eksemplar.eksemplartypeID så skal jeg joine over udlejningsspil hvis ikke så over film.
MEN HVORDAN ?!
Håber i kan hjælpe :)
Hvis i mangler mere information så sig det endelig :)
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
fordi jeg skal have alle data ud på en gang så jeg har det i ET ResultSet. Dataene fra tabellerne skal bruge til at oprette et objekt af type eksemplartype. Jeg programmerer i Java og databasen er en Interbase.
Du skal have et par objekter, ja, men der er vel fortsat ingen grund til at gøre det i én SQL? Den klasse du har lavet til at aflevere dig objektet/rne kan jo "skjule" det for dig.
Hvis det er den eneste måde du vil oprette fx et eksemplartype-objekt på er du jo nødt til at slå film og spil sammen til samme tabel. To af felterne gælder for spil og de andre to er NULL, og omvendt for film. Så kan det lade sig gøre at give et resultset med i constructoren,
Men "normalt" vil man hente et eksemplartype-objekt med en hentEksemplarType(int nummer) så brugeren af denne ikke skal vide noget om den underliggende database-realisering. Og det giver dig mulighed for at det nødvendige antal SQL-kald
Du siger "Men "normalt" vil man hente et eksemplartype-objekt med en hentEksemplarType(int nummer) så brugeren af denne ikke skal vide noget om den underliggende database-realisering. Og det giver dig mulighed for at det nødvendige antal SQL-kald"
Det jeg ska lave er en hentEksemplarType(int nummer) :) Det lyder til du ved hvordan man "normalt" gør det?
Hovsa - jeg overså din sidste kommentar. Men det er lidt omstændeligt at begynde at forklare her. Grundlæggende er det et forsøg på at give forskellige moduler i systemet hver deres ansvar, så systemet til sidst ikke ligner en klassisk og hæslig ASP-side :)
Jeg ka fortælle at jeg har fordelt funktionen ud i flere dele for at få tingene til at lykkes. Min ide med at lave et kæmpejoin var ikke så god som først antaget :)
NZC
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.