Avatar billede Slettet bruger
09. januar 2005 - 13:01 Der er 11 kommentarer og
1 løsning

inner, straight, left, outer, right join.. hvad gør de hver især?

Er der en der kan forklare mig forskellen på disse forskellige join-typer i mysql (måske forkert kategori?)

Jeg har prøvet at kigge på mysql.com, men jeg synes ikke at jeg  får ret meget ud af det (nok mig der er lidt tung i det :P).
Avatar billede fgsupermand Nybegynder
09. januar 2005 - 13:06 #1
Det kan være ret svært at forklare uden illustrationer, så du får et link

http://www.w3schools.com/sql/sql_join.asp

PS: det har nok ikke så meget med php at gøre :)
Avatar billede Slettet bruger
09. januar 2005 - 13:22 #2
nååh ja det var der den var - havde nemlig set den før :D
Avatar billede Slettet bruger
09. januar 2005 - 13:27 #3
jeg havde læst det før, mit problem er at jeg ikke ved hvad inner og outer join gør, og om "join" er det samme som "inner join" ?
Avatar billede fgsupermand Nybegynder
09. januar 2005 - 13:58 #4
inner join finder alle værdier der "passer sammen" i tabelerne, dem der ikke "passer sammen" vises ikke.

out join tager alle værdierne med, så hvis de ikke "passer sammen" så fyldes null ind hvor der mangler værdier.

hmm det er sku lidt svært at forklare
Avatar billede fgsupermand Nybegynder
09. januar 2005 - 16:35 #5
kender du til objekt orienteret programering?
Avatar billede Slettet bruger
09. januar 2005 - 19:47 #6
jeg bruger klasse i php.. ved ikke om det er sådan noget du mener
Avatar billede Slettet bruger
09. januar 2005 - 20:34 #7
gør left join så det samme som outer join?
Avatar billede alvion Nybegynder
10. januar 2005 - 07:20 #8
Ikke helt. "outer join" tager som udgangspunkt alle rækker fra begge tabeller, og prøver først fra den "venstre tabel" at finde en "partner" i den "højre tabel", dernæst samme procedure fra højre mod venstre.

"left join" tager som udgangspunkt kun række fra "venstre tabel", og prøver derefter at finde en partner i den højre tabel.

Derfor findes der også en "right join".

Hvis vi bruger eksempel tabellerne fra w3schools, så vil:

select orders.product, employees.name
from orders
outer join employees on orders.employee_id = employees.employee_id

give følgende resultat:

product  name
------------------------------
printer  Hansen, Ola
table    Svendson, Stephen
chair    Svendson, Stephen
null      Svendson, Tove
null      Pettersen, Kari

hvorimod:

select orders.product, employees.name
from orders
left join employees on orders.employee_id = employees.employee_id

kun vil give:

product  name
------------------------------
printer  Hansen, Ola
table    Svendson, Stephen
chair    Svendson, Stephen
Avatar billede coderdk Praktikant
10. januar 2005 - 16:03 #9
STRAIGHT_JOIN tvinger MySQL til at joine tabellerne i den rækkefølge du angiver, i stedet for selv at bygge en query plan... (svjv)
Avatar billede Slettet bruger
10. januar 2005 - 20:18 #10
ok.

alvion og coderdk smider i svar tak?
Avatar billede coderdk Praktikant
10. januar 2005 - 21:33 #11
Nej tak :)
Avatar billede alvion Nybegynder
11. januar 2005 - 00:02 #12
Jeg har rigeligt :-)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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