Avatar billede heenet Novice
12. juli 2005 - 01:30 Der er 4 kommentarer og
1 løsning

Ens kolennenave i joinede tabeller?

Jeg joiner flere tabeller i dette select kald:

sql = "SELECT * FROM P_Link_Dir"
sql = sql & " INNER JOIN P_Program ON P_Link_Dir.Program = P_Program.ID"
sql = sql & " INNER JOIN P_Image_Sizes ON P_Link_Dir.Image_Size = P_Image_Sizes.ID"
sql = sql & " INNER JOIN P_Link_Type ON P_Link_Dir.Link_Type = P_Link_Type.ID"
sql = sql & " WHERE P_Link_Dir.ID >257 ORDER BY P_Program.Program"
set db = conn.execute(sql)

Kaldet virker fuldt ud efter hensigten, men problemet er, at jeg har en kolonne ved navn ID i alle tabeller.
Skal jeg lave dette om, for at kunne bruge værdien i tabellen P_Program.ID.
Når jeg skriver <%= db("ID") %> får jeg ID værdien fra tabellen P_Link_Type. jeg har forsøgt <%= db("P_Program.ID") %> o.lign. men det fejler.
Avatar billede xyborx Nybegynder
12. juli 2005 - 02:33 #1
Prøv med
SELECT P_Program.ID AS ID,* ....
Avatar billede bunjiboys Nybegynder
13. juli 2005 - 02:54 #2
Det er delvist korrekt det xyborx siger, og så ikke helt. Hvis du bare laver en SELECT P_Program.ID AS ID vil feltet stadig bare hedde ID. Derved vil det stadig blive "overskrevet" af de senere ID felter. Ideen her er at du med "AS" kan ændre navnet til en unik identifier, f.eks. P_Program_ID. Dvs. din select ville se sådan ud:
SELECT P_Program.ID AS P_Program_id FROM table;

Du kan så kalde den med db("P_Program_ID")
Avatar billede xyborx Nybegynder
13. juli 2005 - 04:36 #3
Ah ok. Så lærte jeg også noget i dag :)
Avatar billede heenet Novice
14. juli 2005 - 10:24 #4
Det virker ikke.
Jeg har ændret SQLen til at starte således:
"SELECT P_Program.ID AS P_Program_ID,* FROM P_Link_Dir"

Men jeg får følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM P_Link_Dir INNER JOIN P_Program ON P_Link_Dir.Program =

Jeg er ikke så god til MySQL fejl, men jeg formoder det er noget med at jeg vil SELECTe et felt fra P_Program-tabellen, FROM P_Link_Dir...og det lyder ikke logisk!
Jeg har dog forsøgt at ændre navnet på ID på den tabel jeg henter fra P_Link_Dir.ID og det virker heller ikke, så jeg tror problemet ligger i at kombinere AS med JOIN
Nogen forslag?
Avatar billede heenet Novice
05. april 2007 - 00:09 #5
Jeg har løst mit problem ved at have unikke kolonne navne i hele databasen.
Dette vil være en uoverskuleig måde at gøre det på i en stor database, men i mit tilfælde er det faktisk en ok løsning
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