From dual

From dual - SQL/NoSQL - Programmation

Marsh Posté le 27-06-2005 à 09:37:49    

slt a tous,
 
j'aimerai savoir ce que signifie from dual dans une requete genre:
SELECT sysdate INTO totodebut FROM dual
 
Merci d'avance :)

Reply

Marsh Posté le 27-06-2005 à 09:37:49   

Reply

Marsh Posté le 27-06-2005 à 09:39:09    

rien. On utilise cette table quand on n'a pas besoin d'en utiliser...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-06-2005 à 10:07:09    

C'est effectivement une 'contrainte' de certains SGBD dont oracle, qui n'acceptent pas de requêtes SELECT sans clause 'FROM'.
Ici, ton select concerne une colonne 'système', et la table DUAL sert à exprimer le fait que tu ne cherches pas une table de ta base mais une valeur 'système' .
Sous PostgreSql par exemple, DUAL n'existe pas car la clause FROM n'est pas obligatoire.

Reply

Marsh Posté le 27-06-2005 à 14:27:00    

denzz > en fait, DUAL est vraiment une table.
Seulement, elle a l'avantage d'avoir toujours une et une seule ligne.
 
Ainsi, si on sélectionne une variable système, en passant par DUAL pour trouver les données, alors on n'obtiens cette variable qu'une seule fois.
 

Code :
  1. SELECT * FROM DUAL
  2. Résultat:
  3. DUMMY
  4. -----
  5.     1


 
Ensuite, rien n'empêche d'utiliser une autre table, par exemple, une table "LEGUMES" :
 

Code :
  1. SELECT SYSDATE
  2. FROM LEGUMES
  3. WHERE NOM = 'Choux Fleur'


 
=> Ca fait rigoureusement la même chose, sauf qu'on se demande quel est le rapport entre les Choux Fleur et la choucroute...

Reply

Marsh Posté le 27-06-2005 à 14:28:21    

Sinon, on peut aussi faire :
 

Code :
  1. SELECT SYSDATE FOM LEGUMES


 
Sauf qu'on va récupérer la date autant de fois qu'il y a de lignes dans LEGUMES, donc c'est moins pratique à utiliser :D
 
Mais bon, un :
 

Code :
  1. SELECT DISTINCT SYSDATE FROM LEGUMES


 
Fera tout à fait l'affaire :pt1cable:

Reply

Marsh Posté le 27-06-2005 à 14:29:39    

Arjuna a écrit :

Mais bon, un :
 

Code :
  1. SELECT DISTINCT SYSDATE FROM LEGUMES


 
Fera tout à fait l'affaire :pt1cable:


 
Sauf qu'il risque en interne de tout récupérer et de tester à chaque fois si le résultat est nouveau...pas super...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 27-06-2005 à 14:31:07    

c'est vrai que c'est plus logique de faire un  

Code :
  1. select distinct sysdate from legumes where nomlegume = 'chou' or nomlegume = 'patates'


 
:D

Reply

Marsh Posté le 27-06-2005 à 14:43:01    

skeye a écrit :

Sauf qu'il risque en interne de tout récupérer et de tester à chaque fois si le résultat est nouveau...pas super...[:joce]


Ha ben oui, mais là où y'a pas de problème, c'est que même si il y a des milliards de lignes dans legumes (on dirait pas comme ça, mais y'a plein de légumes différents), SYSDATE sera unique pour toutes les lignes car il est figé au démarrage de la requête :)
Mais c'est pas pour ça que ça ne mettra pas 3 plombes à rammener une ligne :sol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed