IN / NOT IN sur Tris Liste -> Souci!

IN / NOT IN sur Tris Liste -> Souci! - SQL/NoSQL - Programmation

Marsh Posté le 23-05-2006 à 16:37:43    

Bonjour à tous,
 
Je fais face à un problème dans le cadre du développement d'une application que je dois réaliser en stage.
J'ai une liste de dossiers (table Dossier de ma BD) que j'affiche et que je peux trier selon des critères (Voir image ci dessous).
 
http://img80.imageshack.us/img80/1420/listeredim0nq.th.jpg
 
Je rencontre deux problèmes :
- Lorsque je veux faire un tri selon des mots clés (fait intervenir la table Relationmotsclesdossier de ma BD)
- Lorsque je veux faire un tri selon des natures de demande (fait intervenir la table Periodicite de ma BD)
 
Voici ma requête de base (lorsqu'aucun critère n'est sélectionné) :

Code :
  1. SELECT idDossier, dossier.etatDossier, periodicite.etatDossier, dateEcheanceDossier,
  2. idDossierInitial, dossier.refDossier, periodicite.refDossier, relationmotsclesdossier.refDossier,
  3. idClientDossier, idFormaliteCnilDossier, dateLivraisonDossier, idAgentDossier, titreDossier
  4. FROM dossier, periodicite, relationmotsclesdossier
  5. ORDER BY idDossier ;


 
Lorsque je sélectionne des critères la requête me donne ça (insertion d'une variable PHP contenant la chaine à concaténer) :

Code :
  1. SELECT idDossier, dossier.etatDossier, periodicite.etatDossier, dateEcheanceDossier,
  2. idDossierInitial, dossier.refDossier, periodicite.refDossier, relationmotsclesdossier.refDossier,
  3. idClientDossier, idFormaliteCnilDossier, dateLivraisonDossier, idAgentDossier, titreDossier
  4. FROM dossier, periodicite, relationmotsclesdossier ".$_SESSION['AjoutRequete']."
  5. ORDER BY idDossier ;


 
Bref, quand je sélectionne un mot Clé, voici ma requête (le nombre étant l'identifiant du Mot Clé) et dessous suit l'erreur qui commence à m'agacer :

Code :
  1. SELECT idDossier, dossier.etatDossier, periodicite.etatDossier, dateEcheanceDossier,
  2. idDossierInitial, dossier.refDossier, periodicite.refDossier, relationmotsclesdossier.refDossier,
  3. idClientDossier, idFormaliteCnilDossier, dateLivraisonDossier, idAgentDossier, titreDossier
  4. FROM dossier, periodicite, relationmotsclesdossier
  5. WHERE 31 IN (SELECT idMotCle FROM relationmotsclesdossier)
  6. ORDER BY idDossier ;


 
Erreur :

Code :
  1. You have an error in your SQL syntax. Check the manual that corresponds to your
  2. MySQL server version for the right syntax to use near 'SELECT idMotCle FROM relationmotsclesdossier) ORDER BY idDossi
  3. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:\intranet\tableau_de_bord\classes\db.php on line 37
  4. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\intranet\tableau_de_bord\classes\db.php on line 49


 
Voilà, le fichier db.php contient des fonctions. La ligne 37 est la dernière ligne de la fonction ci dessous ( $this->num_rows[$i] = mysql_num_rows( $this->result[$i] ); ) :

Code :
  1. // Effectue une requête
  2.    function query($query,$i) {
  3.        if(is_integer($i)) {
  4.           $this->result[$i] = mysql_query( $query, $this->link );
  5.           echo mysql_error() ;
  6.           $this->num_rows[$i] = mysql_num_rows( $this->result[$i] );
  7.        }
  8.    }


 
La ligne 49 : ( return mysql_fetch_array( $this->result[$i], MYSQL_ASSOC ); )

Code :
  1. // Itère sur le résultat de la requête
  2.    function fetch($i) {
  3.         if(is_integer($i))
  4.           return mysql_fetch_array( $this->result[$i], MYSQL_ASSOC );
  5.    }


 
Je ne vois vraiment pas d'où cela peut venir...
 
Pareil si je fais une sélection d'une Nature de Dossier, voici la requête :

Code :
  1. SELECT idDossier, dossier.etatDossier, periodicite.etatDossier, dateEcheanceDossier,
  2. idDossierInitial, dossier.refDossier, periodicite.refDossier, relationmotsclesdossier.refDossier,
  3. idClientDossier, idFormaliteCnilDossier, dateLivraisonDossier, idAgentDossier, titreDossier
  4. FROM dossier, periodicite, relationmotsclesdossier
  5. WHERE dossier.refDossier NOT IN (SELECT refDossier FROM periodicite)
  6. AND dossier.refDossier NOT IN (SELECT idDossierInitial FROM dossier)
  7. ORDER BY idDossier ;


 
Erreur :

Code :
  1. You have an error in your SQL syntax. Check the manual that corresponds to your
  2. MySQL server version for the right syntax to use near 'SELECT refDossier FROM periodicite) AND dossier.refDossier NOT
  3. Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:\intranet\tableau_de_bord\classes\db.php on line 37
  4. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in F:\intranet\tableau_de_bord\classes\db.php on line 49


 
Bref, si vous pouviez m'aider. Ces erreurs interviennent que dans le cas où je dois intervenir sur d'autres tables que celle où j'affiche tout mon contenu à savoir la table Dossier.
 
Si je n'ai pas été clair, n'hésitez pas à me le dire.
 
Merci ;)


Message édité par Fiiies1 le 23-05-2006 à 16:45:02
Reply

Marsh Posté le 23-05-2006 à 16:37:43   

Reply

Sujets relatifs:

Leave a Replay

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