/ 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
Join
Fra : Jimmy


Dato : 09-10-02 08:49

Hej

Jeg leder efter en salgs LEFT JOIN til MySQL, som tager alle fra
venstresiden og kun dem fra højre-siden, hvis de er der.

Sagen er den at jeg skal validere en bruger ud fra data i en tabel.
I en anden tabel ligger hans adgangsniveau, hvis han da har fået tildelt et.

Hvilken Join tager niveauet, hvis det er der, og samtidig alle rækkerne til
venstre?

På forhånd tak,
Jimmy





 
 
Jonas Levring (09-10-2002)
Kommentar
Fra : Jonas Levring


Dato : 09-10-02 09:47

Appropos Joins, så tænkte jeg lige på om der ikke findes en form for grafisk
fremstilling af de forskellige joins, samt hvilke data de tager med !? De er
sikkert at finde i diverse bøger, men jeg syns nu umidelbart at det er ret
så pebret at gå ud og købe 10-20 forskellige bøger bare for det ;P

/Jonas Levring


"Jimmy" <spoerg@efter.den> skrev i en meddelelse
news:nbRo9.203$K82.961@news.get2net.dk...
> Hej
>
> Jeg leder efter en salgs LEFT JOIN til MySQL, som tager alle fra
> venstresiden og kun dem fra højre-siden, hvis de er der.
>
> Sagen er den at jeg skal validere en bruger ud fra data i en tabel.
> I en anden tabel ligger hans adgangsniveau, hvis han da har fået tildelt
et.
>
> Hvilken Join tager niveauet, hvis det er der, og samtidig alle rækkerne
til
> venstre?
>
> På forhånd tak,
> Jimmy
>
>
>
>



Mark S. Rasmussen (09-10-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 09-10-02 21:57


"Jonas Levring" <jonas@dette_skal_fjernes_levring.dk> wrote in message
news:ao0qal$993$1@eising.k-net.dk...
> Appropos Joins, så tænkte jeg lige på om der ikke findes en form for
grafisk
> fremstilling af de forskellige joins, samt hvilke data de tager med !? De
er
> sikkert at finde i diverse bøger, men jeg syns nu umidelbart at det er ret
> så pebret at gå ud og købe 10-20 forskellige bøger bare for det ;P

Det kommer an på hvilken database du bruger.

Ang det join. Left Outer Join bør være din ven. Bare skift INNER JOIN eller
LEFT JOIN ud med LEFT OUTER JOIN. Så bør du få det ønskede resultat :)

Mvh Mark
--
www.improve.dk



Jimmy (11-10-2002)
Kommentar
Fra : Jimmy


Dato : 11-10-02 07:19

"Mark S. Rasmussen" <mark@tv.dk> wrote in message
news:ao2564$16tp$1@news.cybercity.dk...
>
> Ang det join. Left Outer Join bør være din ven. Bare skift INNER JOIN
eller
> LEFT JOIN ud med LEFT OUTER JOIN. Så bør du få det ønskede resultat :)

Tak for svaret.
Nu opfører MySQL sig ens med de to joins - LEFT JOIN og LEFT OUTER JOIN.
Den henter alle rækker i venstre og padder rækken til højre med Null, hvis
den ikke matcher.

Men er ideen med LEFT JOIN ikke, at den kun tager rækker, når der er matches
i begge?

Mvh
Jimmy



Jens Gyldenkærne Cla~ (11-10-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 11-10-02 09:49

Jimmy skrev:

> Men er ideen med LEFT JOIN ikke, at den kun tager rækker, når
> der er matches i begge?

Nej, det er et INNER JOIN.

Kort fortalt er jointyperne således:

INNER JOIN => match på begge sider (ingen null-værdier i
joinfelter)

LEFT [OUTER][1] JOIN => alle poster fra venstresiden, højresiden fyldes
ud med null hvis der ikke findes et match

RIGHT [OUTER][1] JOIN => alle poster fra højresiden, venstresiden
fyldes ud med null hvis der ikke findes et match

FULL JOIN [2] => kombination af LEFT og RIGHT JOIN. Der fyldes ud med
nullværdier på begge sider

CROSS JOIN [3] => krydsproduktet af to tabeller. Der er ingen
join-felter, forespørgslen returnerer alle kombinationer af rækker fra
de to tabeller.

Noter:
======
[1] OUTER er - i hvert fald i MSSQL - valgfri (LEFT JOIN = LEFT OUTER
JOIN)
[2] FULL JOIN er muligvis specifik for MSSQL
[3] CROSS JOIN svarer til en SELECT på to tabeller uden joins: "SELECT *
FROM foo, bar" = "SELECT * FROM foo CROSS JOIN bar"
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

Jimmy (11-10-2002)
Kommentar
Fra : Jimmy


Dato : 11-10-02 13:04

"Jens Gyldenkærne Clausen" <jens@gyros.invalid> wrote in message
news:Xns92A46E0568C72jcdmfdk@127.0.0.1...
> Jimmy skrev:
>
> > Men er ideen med LEFT JOIN ikke, at den kun tager rækker, når
> > der er matches i begge?
>
> Nej, det er et INNER JOIN.
>
> Kort fortalt er jointyperne således:
>
> INNER JOIN => match på begge sider (ingen null-værdier i
> joinfelter)
>
> LEFT [OUTER][1] JOIN => alle poster fra venstresiden, højresiden fyldes
> ud med null hvis der ikke findes et match
>
> RIGHT [OUTER][1] JOIN => alle poster fra højresiden, venstresiden
> fyldes ud med null hvis der ikke findes et match
>
> FULL JOIN [2] => kombination af LEFT og RIGHT JOIN. Der fyldes ud med
> nullværdier på begge sider
>
> CROSS JOIN [3] => krydsproduktet af to tabeller. Der er ingen
> join-felter, forespørgslen returnerer alle kombinationer af rækker fra
> de to tabeller.

Takker for den udførlige gennemgang

God weekend,
Jimmy



Kristian Damm Jensen (13-10-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 13-10-02 20:25

Jens Gyldenkærne Clausen wrote:

<snip>

> [2] FULL JOIN er muligvis specifik for MSSQL

Ikke mere specifikt, end at det stammer fra SQL-92 standarden, lige som
såvel det almindelige outer join som cross join.

<snip>

--
Kristian Damm Jensen | Feed the hungry at www.thehungersite.com
kristian-damm.jensen@cgey.com | Two wrongs doesn't make a right,
ICQ# 146728724 | but three lefts do.



Jens Gyldenkærne Cla~ (14-10-2002)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-10-02 08:54

Kristian Damm Jensen skrev:

>> [2] FULL JOIN er muligvis specifik for MSSQL
>
> Ikke mere specifikt, end at det stammer fra SQL-92 standarden,
> lige som såvel det almindelige outer join som cross join.

O.k. - tak for opklaringen. Når man (næsten) kun har arbejdet med
databaseprodukter fra ét firma er det ikke lige til at skelne
mellem officielle og uoficielle standarder.

--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma
(rettelser modtages gerne i dk.kultur.sprog)

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

Månedens bedste
Årets bedste
Sidste års bedste