Avatar billede nexus-6 Nybegynder
19. april 2002 - 19:16 Der er 5 kommentarer og
1 løsning

Mere end en tabel ??

Har tre tabeller som indeholder:
table1 --> id, navn
table2 --> id, navn, køn
table3 --> id, køn

I table2 vil jeg så indsætte:
navn = navn(fra table1) where id(fra table1) = X
køn = køn(fra table3) where id(fra table3) = X

Kunne det ikke gøres således med sub-select (hvis jeg havde mysql v.4.xx):
INSERT INTO table2 SET navn='(SELECT navn FROM table1 WHERE id = X)' SET køn='(SELECT køn FROM table3 WHERE id = X)'
??

Er jeg nød til at bruge sub-select eller kan det gøres uden ??

På forhånd tak.
Avatar billede lundsfryd Nybegynder
19. april 2002 - 19:59 #1
Du behøver ikke have MySQL 4 for at lave noget i retning af dit eksempel - du kan bruge et INSERT ... SELECT og her lave et join af dine tabeller. Frit fra leveren:

INSERT INTO table2 (navn, køn) SELECT navn, køn FROM table1 LEFT JOIN table3 ON table1.id = table3.id WHERE table1.id = X
Avatar billede nexus-6 Nybegynder
19. april 2002 - 20:29 #2
Du kunne ikke lige forklare mig hvad der gør hvad i dette udsagn:
FROM table1 LEFT JOIN table3 ON table1.id = table3.id WHERE table1.id = X
Avatar billede lundsfryd Nybegynder
19. april 2002 - 20:34 #3
Jeg laver en LEFT JOIN - dvs. sammensætter tabel1 og tabel3 (dem, du henter data fra). Hvis du ikke kender til joins, er det næsten bedst at læse lidt om det i manualen (http://www.mysql.com/doc). I dette tilfælde svarer det nogenlunde til:

SELECT navn, køn FROM table1, table3 WHERE table1.id = table3.id AND table1.id = X
Avatar billede nexus-6 Nybegynder
19. april 2002 - 20:37 #4
Ok..
Tak for hjælpen
Avatar billede proaccess Nybegynder
20. april 2002 - 07:47 #5
DATABASE-DESIGN...

Hvis hvert navn kun kan have et køn, så er din table2 overflødig, da du så "bare" kan lave:

table1 --> id, navn, kønID
table3 --> id, køn

Og hvis jeg har ret i min formodning om at du kun har 2 køn (mand og kvinde), så burde du overveje, om ikke bare dette skulle stå i selve navnetabellen (som et tekstfelt på 1 tegn "M" eller "K")

table1 --> id, navn, køn

fx: 23, ProAccess, M

Dette vil gøre din database mindre, og det vil blive hurtigere at søge på hvilket køn en person har.
Avatar billede nexus-6 Nybegynder
20. april 2002 - 13:15 #6
Yep... er klar over det, men det var også bare et hurtigt eksempel for, at finde ud af hvordan JOIN virker.
På den rigtige tabel jeg arbejder på er det et must at joine tabellerne.
Men ellers tak.
PS. sider og læser tilbage på alle de tidligere spørgsmål om JOIN :)) da jeg ikke har kringlet den helt endnu.
PPS. er jeg den eneste jeg syntes at mysql/doc er skod. Sytes i hvert fald at de forklarer dårligt.
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