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