SQL- Select MAX(Id)

Fermé
brofa - 17 déc. 2004 à 16:28
 Captain Obvious - 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

5 réponses

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());

8
Timith
Messages postés
1
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
15 février 2009

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 : https://www.php.net/mysql_query
0
virtualsof
Messages postés
106
Date d'inscription
mercredi 27 septembre 2006
Statut
Membre
Dernière intervention
17 août 2014
16
15 sept. 2010 à 12:19
echo $max['MAX(IdDevis)'];

Marche aussi bien...
0
rudak
Messages postés
587
Date d'inscription
samedi 7 juin 2008
Statut
Membre
Dernière intervention
4 juin 2011
46
22 août 2010 à 20:54
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 ?
4
Captain Obvious
10 janv. 2012 à 11:30
depuis toujours :P
0
Tu as un ; en trop dans ta requête
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ;";
Doit être
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ";
3
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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!
-1