/ 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 specielt
Fra : Kurt G


Dato : 14-09-07 14:03

Undskyld titlen, men jeg kunne ikke finde på noget mere dækkende!

Jeg har to tabeller, Artikler og Register.
De eindeholder bl.a. følgende felter:
Artikler: Forfatter, Titel, År, Nr og Side
og
Register: Sted, EmneTekst, KortSide, MarkeringPåKort, Emne og Tidsalder

For at samle de to tabeller til en tabel bruger jeg følgende SQL-sætning.

SELECT Artikler.Forfatter, Artikler.Titel, Artikler.År, Artikler.Nr,
Artikler.Side, Register.Sted, Register.EmneTekst, Register.KortSide,
Register.MarkeringPåKort, Register.Emne, Register.Tidsalder INTO
SamletRegister
FROM Artikler INNER JOIN Register ON (Artikler.Side=Register.Side) AND
(Artikler.År=Register.År) AND (Artikler.Nr=Register.Nr);

Det virker fint, men i tabellen Register går År, Side og Nr kun til og med
1990.
I tabellen Artikler findes der en del poster, hvor År, Side og Nr befinder
sig efter 1990, og de kommer jo ikke med i tabellen SamletRegister.

Hvordan får jeg også disse poster med? Kan det gøres i samme forespørgsel
eller skal der en ny til?
Selvfølgelig bliver alle felterne fra Register tomme, men det er OK.

Mvh Kurt



 
 
Henrik Davidsen (14-09-2007)
Kommentar
Fra : Henrik Davidsen


Dato : 14-09-07 16:11

Prøv med noget RIGHT JOIN.

/Sjang



Stig Johansen (15-09-2007)
Kommentar
Fra : Stig Johansen


Dato : 15-09-07 04:01

Kurt G wrote:

[snip]
> FROM Artikler INNER JOIN Register ON (Artikler.Side=Register.Side) AND

Her skal du bruge LEFT OUTER JOIN i stedet for INNER JOIN

> Hvordan får jeg også disse poster med?

--
Med venlig hilsen
Stig Johansen

Kurt G (15-09-2007)
Kommentar
Fra : Kurt G


Dato : 15-09-07 07:21

"Stig Johansen" <stig_johansen_it_at_=(@)hotmail.com> skrev i en meddelelse
news:46eb4b40$0$90272$14726298@news.sunsite.dk...
> Kurt G wrote:
>
> [snip]
>> FROM Artikler INNER JOIN Register ON (Artikler.Side=Register.Side) AND
>
> Her skal du bruge LEFT OUTER JOIN i stedet for INNER JOIN
>
>> Hvordan får jeg også disse poster med?
>
> --
> Med venlig hilsen
> Stig Johansen

Der skal altså opbygges en ny forespørgsel for at få de sidste med?
Mvh Kurt



Stig Johansen (15-09-2007)
Kommentar
Fra : Stig Johansen


Dato : 15-09-07 15:20

Kurt G wrote:

> "Stig Johansen" <stig_johansen_it_at_=(@)hotmail.com> skrev i en
> meddelelse news:46eb4b40$0$90272$14726298@news.sunsite.dk...
>> Kurt G wrote:
>>
>> [snip]
>>> FROM Artikler INNER JOIN Register ON (Artikler.Side=Register.Side) AND
>>
>> Her skal du bruge LEFT OUTER JOIN i stedet for INNER JOIN
>>
>>> Hvordan får jeg også disse poster med?
>>
>> --
>> Med venlig hilsen
>> Stig Johansen
>
> Der skal altså opbygges en ny forespørgsel for at få de sidste med?

Jeg er ikke sikker på hvad du mener her - du skal rette SQL'en.
Du skal bruge denne her SQL:

SELECT Artikler.Forfatter, Artikler.Titel, Artikler.År, Artikler.Nr,
Artikler.Side, Register.Sted, Register.EmneTekst, Register.KortSide,
Register.MarkeringPåKort, Register.Emne, Register.Tidsalder INTO
SamletRegister
FROM Artikler LEFT OUTER JOIN Register ON (Artikler.Side=Register.Side) AND
(Artikler.År=Register.År) AND (Artikler.Nr=Register.Nr);

hvor INNER JOIN er udskiftet med LEFT OUTER JOIN

Den skuile gerne give dig det ønskede.
Men der er ingen WHERE klausul, så du får samtlige artikler med tilhørende
register.

--
Med venlig hilsen
Stig Johansen

Kurt G (15-09-2007)
Kommentar
Fra : Kurt G


Dato : 15-09-07 22:17

"Stig Johansen" <stig_johansen_it_at_=(@)hotmail.com> skrev
KLIPPET
>>> Her skal du bruge LEFT OUTER JOIN i stedet for INNER JOIN
>>>
>>>> Hvordan får jeg også disse poster med?
>>>
>>> --
>>> Med venlig hilsen
>>> Stig Johansen
>>
>> Der skal altså opbygges en ny forespørgsel for at få de sidste med?
>
> Jeg er ikke sikker på hvad du mener her - du skal rette SQL'en.
> Du skal bruge denne her SQL:

Jeg troede, at der skulle laves en helt ny forespørgsel, der lavede et nyt
udtræk fra den dannede SamletRegister og Artikler. Altså således, at de
sidste efter 1990 blev tilføjet til SamletRegister!

> SELECT Artikler.Forfatter, Artikler.Titel, Artikler.År, Artikler.Nr,
> Artikler.Side, Register.Sted, Register.EmneTekst, Register.KortSide,
> Register.MarkeringPåKort, Register.Emne, Register.Tidsalder INTO
> SamletRegister
> FROM Artikler LEFT OUTER JOIN Register ON (Artikler.Side=Register.Side)
> AND
> (Artikler.År=Register.År) AND (Artikler.Nr=Register.Nr);
>
> hvor INNER JOIN er udskiftet med LEFT OUTER JOIN
>
> Den skuile gerne give dig det ønskede.
> Men der er ingen WHERE klausul, så du får samtlige artikler med tilhørende
> register.

Det er også det, som jeg ønsker. Og jeg havde også prøvet med outer join,
men må have skrevet noget forkert, for jeg fik omkring 4.000.000 poster!!
Men ved at kopiere dit svar virker det, som det skal. Jeg forstår ikke helt
funktionen, så jeg skal have læst noget mere om JOIN!
> --
> Med venlig hilsen
> Stig Johansen

Tak for hjælpen til jer alle.
Mvh Kurt



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

Månedens bedste
Årets bedste
Sidste års bedste