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