/ 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
søgning i flere tabeller - nu virker det -~
Fra : Bo Rattenborg


Dato : 03-09-02 08:52

Nu har jeg fået lavet følgende:

personer
id | fornavn | efternavn
1 | Hans | Pedersen
2 | Peter | Hansen

billeder
id | beskrivelse
1 | Billede 1
2 | Billede 2

samlet
id | billede_id | person_id
1 | 1 | 2
2 | 1 | 2
3 | 2 | 1

Og når jeg selecter via:
SELECT billeder.*

FROM billeder

LEFT JOIN samlet ON billeder.id = samlet.billede_id

LEFT JOIN personer ON personer.id = samlet.person_id

WHERE billeder.beskrivelse LIKE '%hans%' OR

personer.fornavn LIKE '%hans%'


GROUP BY billeder.id;

tja så ser det ud til at virke (med hjælp fra Flemming), men hvorfor viker
det ? - hvad gør LEFT JOIN og hvad er forskellen på LEFT og RIGHT join ?

Jeg er klar over at jeg skal have købt en SQL bog, men lige nu er jeg bare
nysgerrig.

Mvh

Bo Rattenborg




 
 
Kristian Damm Jensen (03-09-2002)
Kommentar
Fra : Kristian Damm Jensen


Dato : 03-09-02 10:16

Bo Rattenborg in his distress wrote:

<snip>

>hvad gør LEFT JOIN og hvad er forskellen på LEFT og RIGHT join ?

LEFT JOIN er en forkortelse for LEFT OUTER JOIN.

For at forstå forskellen mellem et join og et outer join må jeg tage et
par eksempler i brug.

Tabel1:
Id
1
2
3

Tabel2:
Id
2
3
4

"Select * from tabel1 join tabel2 on tabel1.id = tabel2.id" giver

tabel1.id   tabel2.id
2      2
3      3

her "forsvinder" værdierne 1 (fra tabel1) og 4 (fra tabel2).

Benytter vi i stedet "Select * from tabel1 left outer join tabel2 on
tabel1.id = tabel2.id" angiver vi, at *alle* værdier fra tabel1 (den
venstre) skal medtages. Da der ikke i alle tilfælde findes matchende
værdier i tabel2, indsættes i disse tilfælde NULL. Vi får derfor

tabel1.id   tabel2.id
1      NULL
2      2
3      3

Tilsvarende giver "Select * from tabel1 right outer join tabel2 on
tabel1.id = tabel2.id":

tabel1.id   tabel2.id
2      2
3      3
NULL      4

Endelig findes der "Select * from tabel1 full outer join tabel2 on
tabel1.id = tabel2.id" som giver:

tabel1.id   tabel2.id
1      NULL
2      2
3      3
NULL      4

Slut på dagens lektion.

> Jeg er klar over at jeg skal have købt en SQL bog

Jeps!

--
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.


Bo Rattenborg (06-09-2002)
Kommentar
Fra : Bo Rattenborg


Dato : 06-09-02 15:48

Tak for beskrivelsen, nu tror jeg at jeg er ved at have greb om det.

Bo



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

Månedens bedste
Årets bedste
Sidste års bedste