Avatar billede tumpejoe Nybegynder
08. maj 2007 - 20:54 Der er 5 kommentarer

Join med ens feltnavne

Vi har følgende problem:
Når vi joiner flere tabeller med ens feltnavne, skelnes der ikke mellem disse. Eksempel:

TABEL1
-------
ID | NAVN

TABLE2
ID | NAVN | TELEFON

Hvis de to ovenstående joines uden videre vil der returneres

ID | NAVN | ID | NAVN | TELEFON

Det er jo ikke just snedigt. Det vi gerne vil opnå er, at vi får et resultat ud hvori man kan skelne mellem hvilke tabeller felterne kommer fra. Altså eksempelvis

TABEL1_ID |TABEL1_NAVN | TABEL2_ID osv.

Vi vil gerne _undgå_ at hardcode noget som helst, og dermed også brugen af AS, da dataet automatisk skal læses ind i objekter i et hashmap.

Håber der er nogle der kan hjælpe. Jeg er klar over at det måske er en lidt kryptisk forklaring, men spørg og jeg skal prøve at gøre det bedre!

På forhånd tak!
Avatar billede intenz Novice
08. maj 2007 - 21:32 #1
Du kan bruge select as.

F.eks.
select TABEL1.NAVN AS tabel_et_navn osv osv.
Avatar billede dkfire Nybegynder
08. maj 2007 - 22:43 #2
Hvis du joiner til tabeller som har ens navne, så er din databasen ikke særlig godt opbygget.

Hvis du joiner de to tabeller som du har vis, så er navn vel det samme ?? Og hvordan vil du lige joine dem, hvad har de til fælles ?
Avatar billede tumpejoe Nybegynder
08. maj 2007 - 22:57 #3
Ok, som sagt var det nok lidt klumpet formuleret.
Pointen er at automatisere databasekald, således at arbitrære tabeller kan joines og returneres i et hashmap. Derfor er det ikke givet at feltnavne vides på forhånd når kaldet foretages, og AS er dermed ikke en mulighed. Felter som ID vil typisk opstå i de fleste tabeller, og mange andre felter vil med stor sandsynlighed også dele navn. Det er derfor heller ikke en mulighed blot at antage differentiable feltnavne.

Eksemplet ovenfor var derfor kun ment som et, ja, eksempel ;-)

Håber dette gav en lidt bedre forståelse af problemet.
Avatar billede arne_v Ekspert
09. maj 2007 - 01:47 #4
Kan du ikke hente felt navnene fra begge tabeller og så konstruere en dynamisk
query i formen:

SELECT tabel1.felt1 AS tabel1_felt1,...,tabel1.feltx AS tabel1_feltx,tabel2.felt1 AS tabel2_feltx,...,tabel2.felty AS tabel2_felty
FROM tabel1 JOIN tabel2 ON tabel1.feltz=tabel2.feltz
Avatar billede tumpejoe Nybegynder
09. maj 2007 - 07:38 #5
Jo, den tanke har vi også haft. Problemet er bare at man i så fald ville skulle lave et ekstra databasekald for hvert kald :( Og det vil vi naturligvis også gerne undgå.'

Det undrer mig egentlig at der ikke skulle eksistere en eller anden automatiseret måde at omdøbe felter på for at undgå redundans i navngivning?? Vi kan da næppe være de eneste med det problem? Jeg har prøvet at google lidt efter det, men efter ikke at kunne finde noget nogen steder, valgte jeg at forsøge her.

Hvis nogen har en idé så sig endelig til tak!
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
Computerworld tilbyder specialiserede kurser i database-management

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