Avatar billede skeleton Nybegynder
03. november 2003 - 23:36 Der er 16 kommentarer og
2 løsninger

join med 2 tabeller der slå op i samme tabel

Hejsa.

Hvis man har 3 tabeller bundkort, harddisk og producent.
de 2 første slå op i producent for at finde producenten.

enenkelt tabel der slå op i producent kan jeg godt håndtere, men ikke med 2 tabeller der slå op i den samme.

er der nogen der evt kunne lave et lill eks.
har selv brugt noget med
mysql_query("  select .......
              from  .......
              where  "det er her det tilter for mig"
              order  .......");
Avatar billede tfa_dk Nybegynder
03. november 2003 - 23:42 #1
Har du allerede en relation mellem bundkort og harddisk?

producent <-> Bundkort <-> harddisk <-> producent
Avatar billede jinxit Nybegynder
03. november 2003 - 23:48 #2
SELECT *
FROM bundkort b, producent p
WHERE b.producent = p.producent AND p.producent = 'ASUS'
Avatar billede peter_r Nybegynder
03. november 2003 - 23:51 #3
Forstår jeg det rigtigt behøver det jo ikke være samme producent til bundkort og harddisk og der er vel ingen relation mellem bundkort og harddisk, da disse er uafhængige af hinanden ?
Avatar billede skeleton Nybegynder
03. november 2003 - 23:54 #4
tfa_dk:
jeg har egentlig flere databaser..
tabel pc slår op i bundkort som igen slår op i producent
tabel pc slår også op i harddisk som igne slår op i producent.

jinxit:
kan ikke lige følge hvor du vil hen af??
Avatar billede peter_r Nybegynder
03. november 2003 - 23:56 #5
Hvis forrige antagelse er rigtig, kan følgende være din løsning:

Select p.navn bundkortproducent, p2.navn harddiskproducent
from producent p, producent p2, bundkort b, harddisk h
where p.producent = b.producent
and p2.producent = h.producent
and b.id = 'INTEL'
and h.id = 'MAXTOR'
Avatar billede tfa_dk Nybegynder
03. november 2003 - 23:56 #6
skeleton: Jeg tror du mener tabeller.

producent <-> Bundkort <-> Pc <-> harddisk <-> producent

Reslutatet skal vises som en ny forespørgsel?
Avatar billede jinxit Nybegynder
03. november 2003 - 23:58 #7
Det ovenstående SQL udtryk, joiner de to tabeller bundkort og producent under den forudsætning af feltet "producent" er relationen mellem de 2...

Derefter udtages kun de bundkort (inkl. producent info) som er produceret af ASUS.

> Flere tabeller er ikke det samme som flere databaser. Det er 2 forskellige ting.
Avatar billede skeleton Nybegynder
04. november 2003 - 00:10 #8
sorry der skulle ikke have stået databaser, men tabeller.
my bad..
Avatar billede skeleton Nybegynder
04. november 2003 - 00:11 #9
tfa_dk:
din visning af tabellerne er rigtig.
dog er producent tabellen den samme, og pc binder den sammen.
Avatar billede skeleton Nybegynder
04. november 2003 - 00:13 #10
peter_r:
en producent kan godt være representeret i både bundkort og harddisk, derfor i 1 tabel og ikke 2
Avatar billede peter_r Nybegynder
04. november 2003 - 00:20 #11
at tabellen står 2 gange er jo blot for at du skal hente en producent ud til bundkort og en ud til harddisk, men derfor kan det godt være at det tilfældigvis er den samme producent, men det behøver ikke være det. I mit eksempel skal du i stedet for de hardkodede referencer til bundkort og harddisk jo blot referere til pc i stedet
Avatar billede skeleton Nybegynder
04. november 2003 - 00:42 #12
Peter_r:
fårstår jeg dig ret.
i dit ex. bliver der lavet 2 opslag i tabellen producent.
først p som tager producenten til bundkort
og derefter p2 som tager producenten til harddisk.
Avatar billede skeleton Nybegynder
04. november 2003 - 00:43 #13
jeg skal vidst lige bruge lidt tid på at teste denne løsning i mit eget system.
Avatar billede peter_r Nybegynder
04. november 2003 - 07:46 #14
skeleton:
ja, du har forstået ret, det virker i andre databasesystemer, så mon ikke det også virker i MySQL
Avatar billede skeleton Nybegynder
04. november 2003 - 09:50 #15
Hvordan ser det så du med hastighed og optimering.

når nu min db bliver udbygget og jeg har 30 tabeller der slå op i producent.
så vil der vel blive lavet 30 opslag i producent.
er det godt????
Avatar billede peter_r Nybegynder
04. november 2003 - 10:23 #16
Det afhænger også af, hvor mange rækker du har i producent-tabellen, men bliver det langsomt, må du splitte det op i flere bidder. Det er vel heller ikke noget problem, du har vel et eller andet programmeringssprog til at behandle og vise dine data med.
Avatar billede peter_r Nybegynder
04. november 2003 - 10:24 #17
I producenttabellen er det vel den samme nøgle alle de tabeller du skriver om refererer til, så du skal jo blot huske at lave index på den.
Avatar billede skeleton Nybegynder
04. november 2003 - 10:55 #18
i min producent tabel refererer mine andre tabeller til producent_id som også er primær nøgle.
producent indeholder "kun" producent_id og navn
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