Rechercher : dans
Par :

SQL- Select MAX(Id)

Dernière réponse le 15 fév 2009 à 19:46:07 brofa, le 17 déc 2004 à 16:28:40 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « SQL Select MAX(Id) » dans :
SQL - éviter les doublons dans un SELECT VoirProblème Comment éviter les doublons dans les résultats d'une requête SQL ? Solution Il suffit d'utiliser la clause DISTINCT entre SELECT et les champs. Exemple : SELECT distinct id,nom,prenom FROM matable Plus d'informations ...
SQL - Commande SELECT VoirLe langage de manipulation de données Le SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la...
SQL - Opérations ensemblistes VoirLes opérations ensemblistes Les opérations ensemblistes en SQL, sont celles définies dans l'algèbre relationnelle. Elles sont réalisées grâce aux opérateurs : UNION INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implémenté dans...

1

car0, le 17 déc 2004 à 17:23:16

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

Répondre à car0

2

yawheh, le 27 jan 2008 à 15:43:46

Tu as un ; en trop dans ta requête
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ;";
Doit être
$reqNumDevis = "SELECT MAX(IdDevis) FROM DEVIS ";

Répondre à yawheh

3

MrMcCoy, le 8 fév 2009 à 01:41:21
  • +1

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!

Répondre à MrMcCoy

4

MrMcCoy, le 8 fév 2009 à 01:56:19
  • +2

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

Répondre à MrMcCoy

5

 Timith, le 15 fév 2009 à 19:46:07

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

Répondre à Timith