question conne [PHP] - PHP - Programmation
Marsh Posté le 11-09-2002 à 16:11:49
oh quelle etrange fonction, merci de m'avoir appris sa presence
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.
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é ...
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
Marsh Posté le 12-09-2002 à 15:30:10
antp a écrit a écrit : ha je savais pas que ça marchait |
Il me semble que ca marche.
Normalement ca devrait, la partie where est une partie where comme une autre.
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. |
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);
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
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.
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
Marsh Posté le 12-09-2002 à 15:45:32
lorill a écrit a écrit : ils parlaient un peu de la clause where la. |
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. "
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;
Marsh Posté le 12-09-2002 à 15:48:17
joce a écrit a écrit : 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é.
Marsh Posté le 12-09-2002 à 16:08:52
tomlameche a écrit a écrit : 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.
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...