|
| [mysql] Joins Fra : Danni |
Dato : 17-01-01 12:36 |
|
Når jeg skal joine i mysql plejer jeg bare at bruge
WHERE tabel1.kol1_id = tabel2.kol2_id
Men så ind i mellem ser man jo INNER JOIN og OUTER JOIN og diverse andre
JOINS...
Hvad er det lige de betyder i forhold til den jeg bruger? Er det bare en
anden syntax oder was?
| |
Jens Gyldenkærne Cla~ (17-01-2001)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 17-01-01 12:57 |
|
"Danni" <danni@finne.dk> skrev i <ltf96.65$r4.3673@news.get2net.dk>:
>Når jeg skal joine i mysql plejer jeg bare at bruge
>WHERE tabel1.kol1_id = tabel2.kol2_id
Din syntax svarer helt til INNER JOIN.
Se i øvrigt Peter Lykkegaards udmærkede link i
<news:g0e96.41$r4.2675@news.get2net.dk> (vær dog opmærksom på at
linket er ombrudt).
--
Jens G.
| |
Peter Brodersen (17-01-2001)
| Kommentar Fra : Peter Brodersen |
Dato : 17-01-01 17:14 |
|
On 17 Jan 2001 11:56:34 GMT, jens_gy@hotmail.com (Jens Gyldenkærne
Clausen) wrote:
>>Når jeg skal joine i mysql plejer jeg bare at bruge
>>WHERE tabel1.kol1_id = tabel2.kol2_id
>
>Din syntax svarer helt til INNER JOIN.
Ikke helt. Den væsentlige forskel er, hvis tabel2.kol2_id ikke findes,
så vil en INNER JOIN stadigvæk returnere en NULL-værdi (og row'en vil
stadigvæk ryge ud).
Det kan være praktisk, hvis man fx har værdier i stil med:
(adresse: navn, postnummer)
Peter, 2720
Hans, 9999
Jens, 2000
.... og så tilsvarende har en postnr/by-tabel:
(post: postnummer, bynavn)
2000, Frederiksberg
2720, Vanløse
Hvis man så select'er over de to tabeller, og sætter "WHERE
adresse.postnummer = post.postnummer", vil man ikke få hevet Hans med
ud.
--
- Pede
Professionel nørd
| |
Jens Gyldenkærne Cla~ (17-01-2001)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 17-01-01 17:42 |
|
Peter Brodersen <professionel@nerd.dk> skrev:
[(INNER JOIN ON a.s = b.t) = (WHERE a.s = b.t)]
>Ikke helt. Den væsentlige forskel er, hvis tabel2.kol2_id ikke findes,
>så vil en INNER JOIN stadigvæk returnere en NULL-værdi (og row'en vil
>stadigvæk ryge ud).
Nu kender jeg godt nok ikke mySql - og hvis den opfører sig som du
beskriver, trækker jeg mig ydmygt tilbage. Men i Access er der altså ingen
forskel - jeg har prøvet præcis det eksempel du giver, og i ingen af
forespørgslerne kommer Hans med. Null-værdien tages ikke med i en INNER
JOIN. Jeg mener at det er standard SQL - men hvis mysql og andre virkelig
laver forskel er det selvfølgelig en anden sag.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fidoso.dk)
| |
Lauritz Jensen (17-01-2001)
| Kommentar Fra : Lauritz Jensen |
Dato : 17-01-01 18:08 |
|
Peter Brodersen wrote:
>
> On 17 Jan 2001 11:56:34 GMT, jens_gy@hotmail.com (Jens Gyldenkærne
> Clausen) wrote:
>
> >>Når jeg skal joine i mysql plejer jeg bare at bruge
> >>WHERE tabel1.kol1_id = tabel2.kol2_id
> >
> >Din syntax svarer helt til INNER JOIN.
>
> Ikke helt. Den væsentlige forskel er, hvis tabel2.kol2_id ikke findes,
> så vil en INNER JOIN stadigvæk returnere en NULL-værdi (og row'en vil
> stadigvæk ryge ud).
Du tænker på outer, left eller right join.
--
Lauritz
| |
Peter Brodersen (17-01-2001)
| Kommentar Fra : Peter Brodersen |
Dato : 17-01-01 21:27 |
|
On Wed, 17 Jan 2001 18:07:42 +0100, Lauritz Jensen
<lauritz2@hotmail.com> wrote:
>Du tænker på outer, left eller right join.
Jeg tror snarere, problemet var, at jeg ikke tænkte. Beklager - my
bad.
"Jeg var lige stået op, da jeg skrev mit indlæg".
--
- Pede
Professionel nørd
| |
news.sunsite.dk (18-01-2001)
| Kommentar Fra : news.sunsite.dk |
Dato : 18-01-01 00:31 |
|
.... Ja ja ja ja :)
Men jeg er stadig ikke meget klogere i hvad outer join og alle de andre skal
bruges til...
Kunne I give et eksempel på i hvilke tilfælde man skal bruge hvilke joins?
Pretty please ;)
/Danni
| |
Jens Gyldenkærne Cla~ (18-01-2001)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 18-01-01 14:04 |
|
"news.sunsite.dk" <danni@finne.dk> skrev:
>Men jeg er stadig ikke meget klogere i hvad outer join og alle de andre
>skal bruges til...
Har du læst Peters link?
<URL: http://www.cit.teknologisk.dk/brugergrupper/accesserfa/videnbase/Kodee
ksempler/sql/8Select.txt>
>Kunne I give et eksempel på i hvilke tilfælde man skal bruge hvilke
>joins?
I min verden har jeg i 90% af tilfældene kun brug for INNER JOIN.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fidoso.dk)
| |
|
|