| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | PL/SQL - hjælp til MAX Fra : Martin M. Pedersen | 
  Dato :  21-08-07 11:51 |  
  |   
            Hejsa,
    Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne 
 udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
 
 
 Flg. virker ikke, men hvordan kan det gøres ?
 
 SELECT * FROM tickets WHERE 
 MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 
 Mvh
 Martin M. S. Pedersen
  
            
             |   |   
            
        
 
            
         
           Torben Frøberg (21-08-2007) 
         
	
            | Kommentar Fra : Torben Frøberg | 
  Dato :  21-08-07 19:45 |  
  |   
            Martin M. Pedersen wrote:
 > Hejsa,
 >   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne udtrække 
 > de rækker, hvor den nyeste dato er mindre end en vis dato.
 > 
 > 
 > Flg. virker ikke, men hvordan kan det gøres ?
 > 
 > SELECT * FROM tickets WHERE 
 > MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 > <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 > 
 > Mvh
 > Martin M. S. Pedersen
 
 Hvis det er oracle pl/sql skal du vist i stedet for max benytte 
 funktionen greatest.
 
 Torben
  
            
             |   |   
            
        
 
            
         
           Martin M. Pedersen (23-08-2007) 
         
	
            | Kommentar Fra : Martin M. Pedersen | 
  Dato :  23-08-07 12:28 |  
  |   
            Torben Frøberg wrote:
 > Martin M. Pedersen wrote:
 >> Hejsa,
 >>   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne 
 >> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
 >>
 >>
 >> Flg. virker ikke, men hvordan kan det gøres ?
 >>
 >> SELECT * FROM tickets WHERE 
 >> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 >> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 >>
 >> Mvh
 >> Martin M. S. Pedersen
 > 
 > Hvis det er oracle pl/sql skal du vist i stedet for max benytte 
 > funktionen greatest.
 > 
 > Torben
 
 Smart. tak.
 
 /Martin
  
            
             |   |   
            
        
 
            
         
           Michael Zedeler (21-08-2007) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  21-08-07 20:25 |  
  |   
            Martin M. Pedersen wrote:
 >   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne udtrække 
 > de rækker, hvor den nyeste dato er mindre end en vis dato.
 > 
 > Flg. virker ikke, men hvordan kan det gøres ?
 > 
 > SELECT * FROM tickets WHERE 
 > MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 > <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 
 Så skal du bruge select-group by-having.
 
 Prøv at kigge lidt på GROUP BY og HAVING.
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
            
         
           Kristian Damm Jensen (23-08-2007) 
         
	
            | Kommentar Fra : Kristian Damm Jensen | 
  Dato :  23-08-07 11:01 |  
  |   
            Michael Zedeler wrote:
 > Martin M. Pedersen wrote:
 >>   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
 >> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
 >>
 >> Flg. virker ikke, men hvordan kan det gøres ?
 >>
 >> SELECT * FROM tickets WHERE
 >> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 >> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 >
 > Så skal du bruge select-group by-having.
 >
 > Prøv at kigge lidt på GROUP BY og HAVING.
 
 Hvordan skulle det hjælpe? Der er ingen af de indbyggede SQL-funktioner, der 
 understøtter maximum eller minimum eller lignende over flere kolonner. Så 
 skal man ud i noget propritært som fx Torbens forslag for Oracle.
 
 -- 
 Venlig hilsen /Best regards
 Kristian Damm Jensen 
 
 
  
            
             |   |   
            
        
 
            
         
            Michael Zedeler (23-08-2007) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  23-08-07 19:32 |  
  |   
            Kristian Damm Jensen wrote:
 > Michael Zedeler wrote:
 >> Martin M. Pedersen wrote:
 >>>   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
 >>> udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
 >>>
 >>> Flg. virker ikke, men hvordan kan det gøres ?
 >>>
 >>> SELECT * FROM tickets WHERE
 >>> MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 >>> <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 >> Så skal du bruge select-group by-having.
 >>
 >> Prøv at kigge lidt på GROUP BY og HAVING.
 > 
 > Hvordan skulle det hjælpe? Der er ingen af de indbyggede SQL-funktioner, der 
 > understøtter maximum eller minimum eller lignende over flere kolonner. Så 
 > skal man ud i noget propritært som fx Torbens forslag for Oracle.
 
 Jeg har ikke læst spørgsmålet grundigt nok, så det kan ikke løses med 
 group by og having. Til gengæld kan man blot løse det med denne her:
 
 SELECT *
    FROM mintabel
   WHERE post_1_date <= TO_DATE( [...] )
     AND post_2_date <= TO_DATE( [...] )
     ...
     AND post_5_date <= TO_DATE( [...] )
 
 Da max(post_1_date, ..., post_5_date) <= x
 <=> post_1_date <= x and ... and post_5_date <= x
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
            
         
           Kristian Damm Jensen (21-08-2007) 
         
	
            | Kommentar Fra : Kristian Damm Jensen | 
  Dato :  21-08-07 14:17 |  
  |   
            Martin M. Pedersen wrote:
 > Hejsa,
 >   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne
 > udtrække de rækker, hvor den nyeste dato er mindre end en vis dato.
 >
 >
 > Flg. virker ikke, men hvordan kan det gøres ?
 >
 > SELECT * FROM tickets WHERE
 > MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 > <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 
 SELECT * FROM tickets WHERE
 post_1_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 AND post_2_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 AND post_3_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 AND post_4_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 AND post_5_date<=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 
 -- 
 Venlig hilsen /Best regards
 Kristian Damm Jensen 
 
 
  
            
             |   |   
            
        
 
            
         
           Michael Zedeler (23-08-2007) 
         
	
            | Kommentar Fra : Michael Zedeler | 
  Dato :  23-08-07 19:34 |  
  |   
            Martin M. Pedersen wrote:
 > Hejsa,
 >   Jeg har en tabel med fem forskellige datoer, nu vil jeg gerne udtrække 
 > de rækker, hvor den nyeste dato er mindre end en vis dato.
 > 
 > 
 > Flg. virker ikke, men hvordan kan det gøres ?
 > 
 > SELECT * FROM tickets WHERE 
 > MAX(post_1_date,post_2_date,post_3_date,post_4_date,post_5_date)
 > <=TO_DATE('13/04/2007 00:00:00','DD/MM/YYYY HH24:MI:SS');
 
 Noget tyder på at du ikke har normaliseret din database korrekt. Hvad 
 for datoer er der tale om, siden de kan sammenlignes? Bruges de til det 
 samme eller hvad?
 
 Jeg har iøvrigt svaret på dit spørgsmål. Se mit svar til Kristian.
 
 Mvh. Michael.
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |