/ 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
SQL Join Forvirring
Fra : Michael Sørensen


Dato : 22-12-09 20:47

Jeg har en situation, hvor jeg ikke kan gennemskue SQL Join sætningen.

Jeg stiller lige et forsimplet eksempel op her:

Tabel1
Nummer, PK
Navn, string

Eksempel
Nr Navn
-------------
1000 Morten
2000 Michael
3000 Martin
4000 Mikkel
5000 Magnus

Tabel 2
ID, PK
Nr1
Nr2
Nr3
Nr4
Tekst
Dato

Eksempel
ID Nr1 Nr2 Nr3 Nr4 Tekst Dato
-----------------------------------------------------
1 1000 3000 1000 5000 Blablabla 24/12-2009

Tabel 2 vil ALTID kun indeholde 1 post.


Jeg skal så have en SQL, der kan give mig følgende

Ønsket "tabel" (svarende til tabel 2 + data fra tabel 1 - vil altid kun
bestå af 1 post)

ID, PK
Nr1
Navn
Nr2
Navn
Nr3
Navn
Nr4
Navn
Tekst
Dato

Eksempel:
ID Nr1 Navn Nr2 Navn Nr3 Navn Nr4 Navn Tekst Dato
------------------------------------------------------------------------
1 1000 Morten 3000 Martin 1000 Morten 5000 Magnus Blablabla 24/12-2009

Jeg kan godt overskue at få joinet således, at der bliver vist
tilhørende NAVN til det ene nummer, men så nart jeg kommer i en
situation, hvor flere felter skal joines, så knækker filmen

 
 
Arne Vajhøj (22-12-2009)
Kommentar
Fra : Arne Vajhøj


Dato : 22-12-09 23:31

On 22-12-2009 14:46, Michael Sørensen wrote:
> Jeg har en situation, hvor jeg ikke kan gennemskue SQL Join sætningen.
>
> Jeg stiller lige et forsimplet eksempel op her:
>
> Tabel1
> Nummer, PK
> Navn, string
>
> Eksempel
> Nr Navn
> -------------
> 1000 Morten
> 2000 Michael
> 3000 Martin
> 4000 Mikkel
> 5000 Magnus
>
> Tabel 2
> ID, PK
> Nr1
> Nr2
> Nr3
> Nr4
> Tekst
> Dato
>
> Eksempel
> ID Nr1 Nr2 Nr3 Nr4 Tekst Dato
> -----------------------------------------------------
> 1 1000 3000 1000 5000 Blablabla 24/12-2009
>
> Tabel 2 vil ALTID kun indeholde 1 post.
>
>
> Jeg skal så have en SQL, der kan give mig følgende
>
> Ønsket "tabel" (svarende til tabel 2 + data fra tabel 1 - vil altid kun
> bestå af 1 post)
>
> ID, PK
> Nr1
> Navn
> Nr2
> Navn
> Nr3
> Navn
> Nr4
> Navn
> Tekst
> Dato
>
> Eksempel:
> ID Nr1 Navn Nr2 Navn Nr3 Navn Nr4 Navn Tekst Dato
> ------------------------------------------------------------------------
> 1 1000 Morten 3000 Martin 1000 Morten 5000 Magnus Blablabla 24/12-2009
>
> Jeg kan godt overskue at få joinet således, at der bliver vist
> tilhørende NAVN til det ene nummer, men så nart jeg kommer i en
> situation, hvor flere felter skal joines, så knækker filmen

Prøv med en 4 gange self join:

SELECT
t2.id,t2.nr1,t1a.navn,t2.nr2,t1b.navn,t2.nr3,t1c.navn,t2.nr4,t1d.navn,t2.tekst,t2.dato
FROM t2,t1 t1a,t1 t1b,t1 t1c,t1 t1d
WHERE t2.nr1=t1a.id AND t2.nr2=t1b.id AND t2.nr3=t1c.id AND t2.nr4=t1d.id

Arne

Lars Kongshøj (22-12-2009)
Kommentar
Fra : Lars Kongshøj


Dato : 22-12-09 23:48

Arne Vajhøj skrev:
> On 22-12-2009 14:46, Michael Sørensen wrote:
>> Jeg har en situation, hvor jeg ikke kan gennemskue SQL Join sætningen.
>>
>> Jeg stiller lige et forsimplet eksempel op her:
>>
>> Tabel1
>> Nummer, PK
>> Navn, string
>>
>> Eksempel
>> Nr Navn
>> -------------
>> 1000 Morten
>> 2000 Michael
>> 3000 Martin
>> 4000 Mikkel
>> 5000 Magnus
>>
>> Tabel 2
>> ID, PK
>> Nr1
>> Nr2
>> Nr3
>> Nr4
>> Tekst
>> Dato
>>
>> Eksempel
>> ID Nr1 Nr2 Nr3 Nr4 Tekst Dato
>> -----------------------------------------------------
>> 1 1000 3000 1000 5000 Blablabla 24/12-2009
>>
>> Tabel 2 vil ALTID kun indeholde 1 post.
>>
>>
>> Jeg skal så have en SQL, der kan give mig følgende
>>
>> Ønsket "tabel" (svarende til tabel 2 + data fra tabel 1 - vil altid kun
>> bestå af 1 post)
>>
>> ID, PK
>> Nr1
>> Navn
>> Nr2
>> Navn
>> Nr3
>> Navn
>> Nr4
>> Navn
>> Tekst
>> Dato
>>
>> Eksempel:
>> ID Nr1 Navn Nr2 Navn Nr3 Navn Nr4 Navn Tekst Dato
>> ------------------------------------------------------------------------
>> 1 1000 Morten 3000 Martin 1000 Morten 5000 Magnus Blablabla 24/12-2009
>>
>> Jeg kan godt overskue at få joinet således, at der bliver vist
>> tilhørende NAVN til det ene nummer, men så nart jeg kommer i en
>> situation, hvor flere felter skal joines, så knækker filmen
>
> Prøv med en 4 gange self join:
>
> SELECT
> t2.id,t2.nr1,t1a.navn,t2.nr2,t1b.navn,t2.nr3,t1c.navn,t2.nr4,t1d.navn,t2.tekst,t2.dato
>
> FROM t2,t1 t1a,t1 t1b,t1 t1c,t1 t1d
> WHERE t2.nr1=t1a.id AND t2.nr2=t1b.id AND t2.nr3=t1c.id AND t2.nr4=t1d.id

Og endnu bedre: normaliser databasen.

/Lars

Michael Sørensen (22-12-2009)
Kommentar
Fra : Michael Sørensen


Dato : 22-12-09 23:56

Lars Kongshøj skrev:
> Arne Vajhøj skrev:
>> On 22-12-2009 14:46, Michael Sørensen wrote:
>>> Jeg har en situation, hvor jeg ikke kan gennemskue SQL Join sætningen.
>>>
>>> Jeg stiller lige et forsimplet eksempel op her:
>>>
>>> Tabel1
>>> Nummer, PK
>>> Navn, string
>>>
>>> Eksempel
>>> Nr Navn
>>> -------------
>>> 1000 Morten
>>> 2000 Michael
>>> 3000 Martin
>>> 4000 Mikkel
>>> 5000 Magnus
>>>
>>> Tabel 2
>>> ID, PK
>>> Nr1
>>> Nr2
>>> Nr3
>>> Nr4
>>> Tekst
>>> Dato
>>>
>>> Eksempel
>>> ID Nr1 Nr2 Nr3 Nr4 Tekst Dato
>>> -----------------------------------------------------
>>> 1 1000 3000 1000 5000 Blablabla 24/12-2009
>>>
>>> Tabel 2 vil ALTID kun indeholde 1 post.
>>>
>>>
>>> Jeg skal så have en SQL, der kan give mig følgende
>>>
>>> Ønsket "tabel" (svarende til tabel 2 + data fra tabel 1 - vil altid kun
>>> bestå af 1 post)
>>>
>>> ID, PK
>>> Nr1
>>> Navn
>>> Nr2
>>> Navn
>>> Nr3
>>> Navn
>>> Nr4
>>> Navn
>>> Tekst
>>> Dato
>>>
>>> Eksempel:
>>> ID Nr1 Navn Nr2 Navn Nr3 Navn Nr4 Navn Tekst Dato
>>> ------------------------------------------------------------------------
>>> 1 1000 Morten 3000 Martin 1000 Morten 5000 Magnus Blablabla 24/12-2009
>>>
>>> Jeg kan godt overskue at få joinet således, at der bliver vist
>>> tilhørende NAVN til det ene nummer, men så nart jeg kommer i en
>>> situation, hvor flere felter skal joines, så knækker filmen
>>
>> Prøv med en 4 gange self join:
>>
>> SELECT
>> t2.id,t2.nr1,t1a.navn,t2.nr2,t1b.navn,t2.nr3,t1c.navn,t2.nr4,t1d.navn,t2.tekst,t2.dato
>>
>> FROM t2,t1 t1a,t1 t1b,t1 t1c,t1 t1d
>> WHERE t2.nr1=t1a.id AND t2.nr2=t1b.id AND t2.nr3=t1c.id AND t2.nr4=t1d.id
>
> Og endnu bedre: normaliser databasen.
>
> /Lars

Det er en form for programindstillinger, som jeg skal have inkluderet i
min databasefil. Programindstillingerne HØRER TIL min databasefil og
ikke applikationen, så jeg kan ikke bruge INI eller reg.databasen.

Derfor havde jeg tænkt mig at have en enkelt tabel med 1 post til dette.
Og der har jeg brug for ovenstående.

Er det en håbløs ide?

Lars Kongshøj (23-12-2009)
Kommentar
Fra : Lars Kongshøj


Dato : 23-12-09 03:45

Michael Sørensen skrev:
> Det er en form for programindstillinger, som jeg skal have inkluderet i
> min databasefil. Programindstillingerne HØRER TIL min databasefil og
> ikke applikationen, så jeg kan ikke bruge INI eller reg.databasen.
>
> Derfor havde jeg tænkt mig at have en enkelt tabel med 1 post til dette.
> Og der har jeg brug for ovenstående.
>
> Er det en håbløs ide?

Det er som sådan ikke håbløst. Men det er normalt ikke god skik og brug
at have samme type kolonne flere gange i en tabel. Der vælger man
normalt at have disse 0-n værdier liggende i en separat tabel.

/Lars

Søg
Reklame
Statistik
Spørgsmål : 177417
Tips : 31962
Nyheder : 719565
Indlæg : 6407867
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste