Posez votre question Signaler

SQL- Select MAX(Id)

brofa - Dernière réponse le 10 janv. 2012 à 11:30
Bonjour à tous,

J'ai un pb de syntaxe!
J'ai 2 tables Devis et Commande qui ont un IdDevis

j'ai 1 requete
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ;";

je voudrais lors d'un enregistrement le IdDevis s'enregistre dans la table Commande

Q: peut-on faire une jointure entre les 2 tables et en utilisant MAX ?

merci
Brofa
Lire la suite 

SQL- Select MAX(Id) »

8 réponses
Réponse
+8
moins plus
J'ai fais une erreur dans mon code, juste avant...


$requete = "SELECT MAX(IdDevis) FROM DEVIS ;"; 
$result = mysql_query($requete, $link/*connexion avec la BD*/) or die($query . " - " . mysql_error());//retourne une erreur et ferme la connexion en cas d'erreur

$max=mysql_fetch_array($result);

//un petit test pour la forme! c'est important de mettre le zero puisque la commande retourne un scalaire et la fonction un tableau
echo $max[0];

$requete = "INSERT INTO COMMANDE (IdDevis) VALUE ( ' " . $max[0] ." ');";
mysql_query($requete, $link/*connexion avec la BD*/) or die($query . " - " . mysql_error());

Timith - 15 févr. 2009 à 19:46
la requête passée à la fonction mysql_query ne doit pas finir avec un ';'
c'est la fonction qui prend ça en charge

à voir : http://fr.php.net/mysql_query
virtualsof - 15 sept. 2010 à 12:19
echo $max['MAX(IdDevis)'];

Marche aussi bien...
Ajouter un commentaire
Réponse
+2
moins plus
Tu as un ; en trop dans ta requête
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ;";
Doit être
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ";
Ajouter un commentaire
Réponse
+2
moins plus
Désolé, mais une requête SQL se termine toujours par un ; et une ligne de commande en php aussi alors 2 ;! 


ah ? depuis quand ?
Captain Obvious - 10 janv. 2012 à 11:30
depuis toujours :P
Ajouter un commentaire
Réponse
+0
moins plus
Lors d'un enregistrement... d'une insertion tu veux dire? Pas sûr de comprendre... Ce qui suit pourrait-il d'aider?

INSERT INTO Commande (ldDevis) SELECT MAX(ldDevis) FROM Devis

Ceci est valide en Transact SQL. Je n'ai jamais testé si MySQL le prend... Il faut faire attention à la manière dont la table Commande est déclarée. Aux champs autonumber et aux colonnes qui n'acceptent pas les null et n'ont pas de valeur par défaut, notament (faut ajouter des colonnes dans le SELECT alors).

Caroline
Ajouter un commentaire
Réponse
-2
moins plus
Tu as un ; en trop dans ta requête
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ;";
Doit être
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ";


Désolé, mais une requête SQL se termine toujours par un ; et une ligne de commande en php aussi alors 2 ;! Aussi pour ce qui est de la fonction Max() mySQL n'est pas aussi puissant que certain autre SGBD comme oracle par exemple. Il tolère les requête imbriquer à condition qu'elle ne sois pas récursive sur la même table. Sinon je te propose la fonction auto_increment(), elle se fait ors du create de la table. Si c'est une nécessité de le faire à la main fais 2 requêtes.

$requete = "SELECT MAX(IdDevis) FROM DEVIS ;"; 
$result = mysql_query($requete, $link/*connexion avec la BD*/) or die($query . " - " . mysql_error());//retourne une erreur et ferme la connexion en cas d'erreur

$requete = "INSERT INTO COMMANDE (IdDevis) VALUE ( ' " . $result ." ');";
mysql_query($requete, $link/*connexion avec la BD*/) or die($query . " - " . mysql_error());


En me relisant je me suis rendu compte que je ne répondait pas tout à fait a ta question mais ça peu surment pas nuire! Bonne Chance!
Ajouter un commentaire
Ce document intitulé « SQL- Select MAX(Id) » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook