|
| Forklaring på MySQL JOIN Fra : Harald |
Dato : 08-10-03 14:37 |
|
Hej
Findes der en forklaring på de forskellige JOIN muligheder i MySQL nogen
steder? Jeg syntes ikke at MySQL manualen giver en forklaring der er til at
forstå.
/HK
| |
Harald (08-10-2003)
| Kommentar Fra : Harald |
Dato : 08-10-03 17:14 |
|
"Harald" <news10@-REMOVE-THIS-kroning.dk> skrev i en meddelelse
news:3f841362$0$69975$edfadb0f@dread12.news.tele.dk...
> Hej
>
> Findes der en forklaring på de forskellige JOIN muligheder i MySQL nogen
> steder? Jeg syntes ikke at MySQL manualen giver en forklaring der er til
at
> forstå.
Her er hvad jeg skal bruge: Jeg har 2 tabeller:
Table1:
IDKode integer
Navn string
Table2:
IDKode integer
Ejer integer
NogetAndet : string
Disse 2 tabeller skal joines, skal man gøre sådan?
SELECT * FROM table1 LEFT JOIN table2 ON table1.IDKode = table2.Ejer
WHERE table2.IDKode IS NOT NULL
eller?
SELECT * FROM table1 RIGHT JOIN table2 ON table1.IDKode = table2.Ejer
begge metoder virker men der er måske en 3. metode der er bedere?
Mvh
HK
| |
Michael Rasmussen (08-10-2003)
| Kommentar Fra : Michael Rasmussen |
Dato : 08-10-03 17:20 |
|
Den Wed, 08 Oct 2003 18:14:28 +0200. skrev Harald:
> "Harald" <news10@-REMOVE-THIS-kroning.dk> skrev i en meddelelse
>
> Her er hvad jeg skal bruge: Jeg har 2 tabeller:
>
> Table1:
> IDKode integer
> Navn string
>
> Table2:
> IDKode integer
> Ejer integer
> NogetAndet : string
>
> Disse 2 tabeller skal joines, skal man gøre sådan?
>
Hvorfor ikke blot: select * from Table1,Table2 where IDKode=Ejer
--
Hilsen/Sincerely, Michael Rasmussen
En windows admin er en person, for hvem den største bedrift er, at
lave konfiguration af serveren med trial and error via en gui.
| |
Harald (08-10-2003)
| Kommentar Fra : Harald |
Dato : 08-10-03 18:11 |
|
"Michael Rasmussen" <mir@datanom.net> skrev i en meddelelse
news:pan.2003.10.08.16.19.27.541366@datanom.net...
> Den Wed, 08 Oct 2003 18:14:28 +0200. skrev Harald:
>
> > "Harald" <news10@-REMOVE-THIS-kroning.dk> skrev i en meddelelse
> >
> > Her er hvad jeg skal bruge: Jeg har 2 tabeller:
> >
> > Table1:
> > IDKode integer
> > Navn string
> >
> > Table2:
> > IDKode integer
> > Ejer integer
> > NogetAndet : string
> >
> > Disse 2 tabeller skal joines, skal man gøre sådan?
> >
> Hvorfor ikke blot: select * from Table1,Table2 where IDKode=Ejer
Er det den hurtigeste metode?
/HK
| |
Troels Arvin (08-10-2003)
| Kommentar Fra : Troels Arvin |
Dato : 08-10-03 19:04 |
|
On Wed, 08 Oct 2003 19:10:55 +0200, Harald wrote:
>> Hvorfor ikke blot: select * from Table1,Table2 where IDKode=Ejer
>
> Er det den hurtigeste metode?
Den er sandsynligvis ikke specielt langsommelig, i hvertfald. Og den er i
hvertfald let læselig.
Du nævnte tidligere noget med left joins; var der en særlig grund til
det?
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Harald (08-10-2003)
| Kommentar Fra : Harald |
Dato : 08-10-03 19:49 |
|
"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:pan.2003.10.08.18.04.12.316676@arvin.dk...
> On Wed, 08 Oct 2003 19:10:55 +0200, Harald wrote:
>
> >> Hvorfor ikke blot: select * from Table1,Table2 where IDKode=Ejer
> >
> > Er det den hurtigeste metode?
>
> Den er sandsynligvis ikke specielt langsommelig, i hvertfald. Og den er i
> hvertfald let læselig.
>
> Du nævnte tidligere noget med left joins; var der en særlig grund til
> det?
Kun fordi at brugeren også har mulighed for at vælge at se alle poster i
table1, også selvom der ingen tilhørende poster er i table2 og til dette
bruger jeg:
SELECT * FROM table1 LEFT JOIN table2 ON table1.IDKode = table2.Ejer
og jeg havde en idé om at JOIN var smartere at bruge end alt andet :)
/HK
| |
Troels Arvin (08-10-2003)
| Kommentar Fra : Troels Arvin |
Dato : 08-10-03 20:20 |
|
On Wed, 08 Oct 2003 20:49:22 +0200, Harald wrote:
> Kun fordi at brugeren også har mulighed for at vælge at se alle poster i
> table1, også selvom der ingen tilhørende poster er i table2
Jep, så skal du netop have fat i et outer join, såsom et left join.
> og jeg havde en idé om at JOIN var smartere at bruge end alt andet :)
Der er tale om joins i begge tilfælde, blot formuleret med lidt
forskellige vendinger.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Harald (08-10-2003)
| Kommentar Fra : Harald |
Dato : 08-10-03 21:26 |
|
"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:pan.2003.10.08.19.19.52.653716@arvin.dk...
> On Wed, 08 Oct 2003 20:49:22 +0200, Harald wrote:
>
> > Kun fordi at brugeren også har mulighed for at vælge at se alle poster i
> > table1, også selvom der ingen tilhørende poster er i table2
>
> Jep, så skal du netop have fat i et outer join, såsom et left join.
>
> > og jeg havde en idé om at JOIN var smartere at bruge end alt andet :)
>
> Der er tale om joins i begge tilfælde, blot formuleret med lidt
> forskellige vendinger.
Ja det har jeg også fundet ud af nu efter at have læst forskellige
forklaringer.
/HK
| |
Michael Rasmussen (08-10-2003)
| Kommentar Fra : Michael Rasmussen |
Dato : 08-10-03 20:20 |
|
Den Wed, 08 Oct 2003 20:49:22 +0200. skrev Harald:
>
> Kun fordi at brugeren også har mulighed for at vælge at se alle poster i
> table1, også selvom der ingen tilhørende poster er i table2 og til dette
> bruger jeg:
>
> SELECT * FROM table1 LEFT JOIN table2 ON table1.IDKode = table2.Ejer
>
> og jeg havde en idé om at JOIN var smartere at bruge end alt andet :)
>
Jamen, så har du misforstået noget Mit forslag laver også en join.
Hver gang du beder om output, hvor output er bestemt af sammenhængen
mellem 2 felter i forskellige tabeller, laves der en implicit join.
--
Hilsen/Sincerely, Michael Rasmussen
En windows admin er en person, for hvem den største bedrift er, at
lave konfiguration af serveren med trial and error via en gui.
| |
Jesper Brunholm (08-10-2003)
| Kommentar Fra : Jesper Brunholm |
Dato : 08-10-03 18:44 |
| | |
Harald (08-10-2003)
| Kommentar Fra : Harald |
Dato : 08-10-03 20:02 |
| | |
|
|