/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
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 wrote:

> Findes der en forklaring på de forskellige JOIN muligheder i MySQL nogen
> steder?

Mig bekendt er der ikke forskel på MySQL os SQL hvad det angår, så
enhver SQL Joins-forklaring 'virker'.

Den her
<http://epoch.cs.berkeley.edu:8000/sequoia/dba/montage/FAQ/Joins.html>

så godt ud, og der er en stak mere her:
<http://www.google.com/search?q=SQL%20joins%20explained>

mvh

Jesper Brunholm


Harald (08-10-2003)
Kommentar
Fra : Harald


Dato : 08-10-03 20:02

"Jesper Brunholm" <nospam@brunholm-scharff.dk> skrev i en meddelelse
news:bm1iaq$5ub$1@sunsite.dk...
> Harald wrote:
>
> > Findes der en forklaring på de forskellige JOIN muligheder i MySQL nogen
> > steder?
>
> Mig bekendt er der ikke forskel på MySQL os SQL hvad det angår, så
> enhver SQL Joins-forklaring 'virker'.
>
> Den her
> <http://epoch.cs.berkeley.edu:8000/sequoia/dba/montage/FAQ/Joins.html>
>
> så godt ud, og der er en stak mere her:
> <http://www.google.com/search?q=SQL%20joins%20explained>

Der her er go:
http://www.databasejournal.com/features/mssql/article.php/1438001

Så jeg har fattet det nu. Jeg takker.

/HK



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste