| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | sql2005 find record der ikke er der :-) Fra : Steen Hansen | 
  Dato :  12-12-08 14:14 |  
  |   
            
 select a.id
 
 from a , b
 
 where
 
 a.id=b.aid and a.y=XXX and b.z=FFF
 
 ovenstående vil retunere a.id med en værdi hvis ovenstående records
 findes.
 
 men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
 ? 
 
 Populært sagt
 
 (a.id=b.aid) = NULL 
 
 dvs aldigt noget sammenfald mellem a.id og b.aid
 
 Håber det er forståligt
 
 MVH
 Steen
  
            
             |   |   
            
        
 
            
         
           Arne Vajhøj (12-12-2008) 
         
	
            | Kommentar Fra : Arne Vajhøj | 
  Dato :  12-12-08 16:57 |  
  |   
            Steen Hansen wrote:
 > select a.id
 > 
 > from a , b
 > 
 > where
 > 
 > a.id=b.aid and a.y=XXX and b.z=FFF
 > 
 > ovenstående vil retunere a.id med en værdi hvis ovenstående records
 > findes.
 > 
 > men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
 > ? 
 > 
 > Populært sagt
 > 
 > (a.id=b.aid) = NULL 
 > 
 > dvs aldigt noget sammenfald mellem a.id og b.aid
 > 
 > Håber det er forståligt
 
 En eller anden form for OUTER JOIN vil jeg tro.
 
 Siden du skal bruge a.id så formentligt en LEFT JOIN.
 
 Arne
  
            
             |   |   
            
        
 
            
         
           Steen Hansen (13-12-2008) 
         
	
            | Kommentar Fra : Steen Hansen | 
  Dato :  13-12-08 09:00 |  
  |   
            On Fri, 12 Dec 2008 10:57:07 -0500, Arne Vajhøj <arne@vajhoej.dk>
 wrote:
 
 >Steen Hansen wrote:
 >> select a.id
 >> 
 >> from a , b
 >> 
 >> where
 >> 
 >> a.id=b.aid and a.y=XXX and b.z=FFF
 >> 
 >> ovenstående vil retunere a.id med en værdi hvis ovenstående records
 >> findes.
 >> 
 >> men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
 >> ? 
 >> 
 >> Populært sagt
 >> 
 >> (a.id=b.aid) = NULL 
 >> 
 >> dvs aldigt noget sammenfald mellem a.id og b.aid
 >> 
 >> Håber det er forståligt
 >
 >En eller anden form for OUTER JOIN vil jeg tro.
 >
 >Siden du skal bruge a.id så formentligt en LEFT JOIN.
 >
 >Arne
 
 Har jeg prøvet men uden held desværre 
 
 Steen
  
            
             |   |   
            
        
 
            
         
            Jan Bachman (13-12-2008) 
         
	
            | Kommentar Fra : Jan Bachman | 
  Dato :  13-12-08 09:28 |  
  |   
            On Sat, 13 Dec 2008 09:00:03 +0100, Steen Hansen <test@test.dk> wrote:
 
 >Har jeg prøvet men uden held desværre 
 >
 >Steen
 
 Tag de heldige bukser på og prøv denne:
 
 select a.id
 from a
 left join (
 select b.aid
 from b
 where b.z=FFF
 ) as c
 on a.id = c.aid
 where a.y=XXX
 
 /Jan
  
            
             |   |   
            
        
 
            
         
             Stig Johansen (13-12-2008) 
         
	
            | Kommentar Fra : Stig Johansen | 
  Dato :  13-12-08 13:51 |  
  |   
            Jan Bachman wrote:
 
 > On Sat, 13 Dec 2008 09:00:03 +0100, Steen Hansen <test@test.dk> wrote:
 > 
 >>Har jeg prøvet men uden held desværre
 >>
 >>Steen
 > 
 > Tag de heldige bukser på og prøv denne:
 > 
 > select a.id
 > from a
 > left join (
 > select b.aid
 > from b
 > where b.z=FFF
 > ) as c
 > on a.id = c.aid
 > where a.y=XXX
 
 Jeg synes ikke rigtig det giver mening.
 OP er åbenbart ude på at finde de records der ikke eksisterer, og ikke
 totalmængden.
 
 Han skriver:
 > Populært sagt
 > (a.id=b.aid) = NULL 
 > dvs aldigt noget sammenfald mellem a.id og b.aid
 
 Det burde kunne klares med:  
 SELECT Id FROM 
 A
 LEFT OUTER JOIN B ON B.Aid=A.Id
 WHERE A.Y = XXX AND B.Aid IS NULL
 
 Men han indfører også en anden klausul, nemlig B.Y=FFF
 
 Hvis han vil have de records, der ikke opfylder disse betingelser burde han
 kunne lave det med:
 SELECT Id FROM 
 A
 LEFT OUTER JOIN B ON B.Aid=A.Id AND B.Y=FFF
 WHERE A.Y = XXX AND B.Aid IS NULL
 
 (Ikke testet)
 
 -- 
 Med venlig hilsen
 Stig Johansen
  
            
             |   |   
            
        
 
            
         
           Michael Zedeler (14-12-2008) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  14-12-08 10:53 |  
  |   
            Steen Hansen wrote:
 > select a.id
 > 
 > from a , b
 > 
 > where
 > 
 > a.id=b.aid and a.y=XXX and b.z=FFF
 > 
 > ovenstående vil retunere a.id med en værdi hvis ovenstående records
 > findes.
 > 
 > men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
 > ? 
 > 
 > Populært sagt
 > 
 > (a.id=b.aid) = NULL 
 > 
 > dvs aldigt noget sammenfald mellem a.id og b.aid
 
 Hvis du vil have alle de rækker fra a hvor det gælder at der ikke findes 
   en række i b, hvor a.id = b.aid, så:
 
 SELECT *
    FROM a
   WHERE id NOT IN (SELECT aid FROM b)
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
            
         
           Steen Hansen (15-12-2008) 
         
	
            | Kommentar Fra : Steen Hansen | 
  Dato :  15-12-08 15:08 |  
  |   
            On Sun, 14 Dec 2008 10:53:28 +0100, Michael Zedeler
 <michael@zedeler.dk> wrote:
 
 >Steen Hansen wrote:
 >> select a.id
 >> 
 >> from a , b
 >> 
 >> where
 >> 
 >> a.id=b.aid and a.y=XXX and b.z=FFF
 >> 
 >> ovenstående vil retunere a.id med en værdi hvis ovenstående records
 >> findes.
 >> 
 >> men hvordan får jeg også retuneret a.id hvis a.id=b.aid ikke eksistere
 >> ? 
 >> 
 >> Populært sagt
 >> 
 >> (a.id=b.aid) = NULL 
 >> 
 >> dvs aldigt noget sammenfald mellem a.id og b.aid
 >
 >Hvis du vil have alle de rækker fra a hvor det gælder at der ikke findes 
 >  en række i b, hvor a.id = b.aid, så:
 >
 >SELECT *
 >   FROM a
 >  WHERE id NOT IN (SELECT aid FROM b)
 >
 >Mvh. Michael.
 
 
 Mange tak 
 det var lige løsningen på mit problem
 
 Hilsen
 Steen
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |