[PHP] question conne

question conne [PHP] - PHP - Programmation

Marsh Posté le 11-09-2002 à 15:58:11    

Question conne, est il possible deffectuer une requete genre update machin machin where id="le plus grand de tous les id de la table"?
merci de repondre, je cherche de mon cote un moyen de contourner ca...

Reply

Marsh Posté le 11-09-2002 à 15:58:11   

Reply

Marsh Posté le 11-09-2002 à 16:03:04    

bah à la limite tu fais un select max(id) juste avant...

Reply

Marsh Posté le 11-09-2002 à 16:11:49    

oh quelle etrange fonction, merci de m'avoir appris sa presence

Reply

Marsh Posté le 12-09-2002 à 15:13:25    

antp a écrit a écrit :

bah à la limite tu fais un select max(id) juste avant...  



Ou directement update machin machin where id=max(id)
C'est plus rapide vu que c'est en une seule requête. ;)

Reply

Marsh Posté le 12-09-2002 à 15:17:10    

orazur a écrit a écrit :

Question conne, est il possible deffectuer une requete genre update machin machin where id="le plus grand de tous les id de la table"?
merci de repondre, je cherche de mon cote un moyen de contourner ca...




Ce ne sont pas les questions qui sont connes, seulement les réponses !
( parole d'un vieux sage tibétain qui vit quelque part en Auvergne ).
...
désolé ...
 :pt1cable:

Reply

Marsh Posté le 12-09-2002 à 15:28:50    

omega2 a écrit a écrit :

Ou directement update machin machin where id=max(id)
C'est plus rapide vu que c'est en une seule requête. ;)




 
ha je savais pas que ça marchait :D

Reply

Marsh Posté le 12-09-2002 à 15:30:10    

antp a écrit a écrit :

 
 
ha je savais pas que ça marchait :D



Il me semble que ca marche.
Normalement ca devrait, la partie where est une partie where comme une autre. ;)

Reply

Marsh Posté le 12-09-2002 à 15:35:36    

omega2 a écrit a écrit :

Il me semble que ca marche.
Normalement ca devrait, la partie where est une partie where comme une autre. ;)




 :non: Ben en fait non, ca peut pas marcher. Tu ne peux utiliser des fonctions d'agregat comme max, min, sum ou count que dans des requete avec des clause group by.
Par exemple tu peux faire :
select id
from toto
group by id
having valeur = max(valeur);
Pour faire l'update, tu es obligé de faire :
update machin set bidule = truc where chose = (select max(chose) from bidule);

Reply

Marsh Posté le 12-09-2002 à 15:42:37    

en tout cas en mysql tu peux faire select max(id) FROM toto sans fonction d'agregat (a condition que tu ne rapatries qu'une seule colonne).
Mais c'est peut etre une extension au SQL ANSI

Reply

Marsh Posté le 12-09-2002 à 15:43:36    

joce a écrit a écrit :

en tout cas en mysql tu peux faire select max(id) FROM toto sans fonction d'agregat (a condition que tu ne rapatries qu'une seule colonne).
Mais c'est peut etre une extension au SQL ANSI  




 
ils parlaient un peu de la clause where la.

Reply

Marsh Posté le 12-09-2002 à 15:43:36   

Reply

Marsh Posté le 12-09-2002 à 15:44:58    

joce a écrit a écrit :

en tout cas en mysql tu peux faire select max(id) FROM toto sans fonction d'agregat (a condition que tu ne rapatries qu'une seule colonne).
Mais c'est peut etre une extension au SQL ANSI  




 
aucune extension ... utilisable partout ca... tu vas pas t'amuser a ajouter un group by qui est inutile puisque tu ne veux qu'une seule colonne

Reply

Marsh Posté le 12-09-2002 à 15:45:32    

lorill a écrit a écrit :

 
 
ils parlaient un peu de la clause where la.



:heink:
et moi je repondais un peu a ca : "Tu ne peux utiliser des fonctions d'agregat comme max, min, sum ou count que dans des requete avec des clause group by. "

Reply

Marsh Posté le 12-09-2002 à 15:46:32    

joce a écrit a écrit :

en tout cas en mysql tu peux faire select max(id) FROM toto sans fonction d'agregat (a condition que tu ne rapatries qu'une seule colonne).
Mais c'est peut etre une extension au SQL ANSI  




Oui, disons que je me suis mal exprimé.
Tu ne peux mettre de condition sur un agregat que dans le having ce qui suppose un group by.
Tu peux pas faire des trucs du genres :
select chose
from bidule
where trucmuche = Fonction_Agregat(trucbidule).
 
Par contre, bien sur tu peux topujours faire
select Fonction_agregat ( trucmuche)
from chose;
 

Reply

Marsh Posté le 12-09-2002 à 15:48:17    

joce a écrit a écrit :

:heink:
et moi je repondais un peu a ca : "Tu ne peux utiliser des fonctions d'agregat comme max, min, sum ou count que dans des requete avec des clause group by. "




 
ooops, j'ai loupé un passage. désolé.

Reply

Marsh Posté le 12-09-2002 à 16:08:52    

tomlameche a écrit a écrit :

 
 :non: Ben en fait non, ca peut pas marcher. Tu ne peux utiliser des fonctions d'agregat comme max, min, sum ou count que dans des requete avec des clause group by.
Par exemple tu peux faire :
select id
from toto
group by id
having valeur = max(valeur);
Pour faire l'update, tu es obligé de faire :
update machin set bidule = truc where chose = (select max(chose) from bidule);  



Ha oui, c'est vrai, ca marche pas.
Me suis trompé alors.

Reply

Sujets relatifs:

Leave a Replay

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