jantonazzo
Messages postés46Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention 7 avril 2010
-
11 mai 2006 à 16:42
jantonazzo
Messages postés46Date d'inscriptionlundi 24 janvier 2005StatutMembreDernière intervention 7 avril 2010
-
12 mai 2006 à 12:50
Bonjour à tous.
J'effectue deux requets dans mon fichier où j'affiche le resultat apres chaque requet.
********************************************************************************
$sql = 'SELECT calendrier.date, documents.typedoc, documents.numdoc, documents.provenance, documents.fichier, documents.commentaire, clients.societe, etat_facture.numdoc, etat_facture.etat, etat_facture.numdoc
FROM calendrier, documents, clients, etat_facture
WHERE etat_facture.numdoc=documents.numdoc
AND calendrier.numdoc=documents.numdoc
AND documents.numcli=clients.numcli
AND societe like "'.trim($list).'"
ORDER BY `Date` DESC';
$sql = 'SELECT calendrier.date, documents.typedoc, documents.numdoc, documents.provenance, documents.fichier, documents.commentaire, clients.societe, etat_facture.numdoc, etat_facture.etat, etat_facture.numdoc
FROM calendrier, documents, clients, etat_facture
WHERE etat_facture.numdoc=documents.numdoc
AND calendrier.numdoc=documents.numdoc
AND documents.numcli=clients.numcli
AND commentaire like "%'.trim($list).'%"
ORDER BY `Date` DESC';
Mon probleme est que il est possible qu'un des resultats de la 2eme requete soit identique à un des resultat de la 1ere requete.
Donc j'aimerais faire un script agissant sur la 2eme requete qui
comparait les "numdoc" (id unique de ma table documents)
afin de ne pas les afficher si ils existent dans la 1ere requete.
Teclis01
Messages postés1423Date d'inscriptionmardi 14 décembre 2004StatutMembreDernière intervention29 décembre 20124 11 mai 2006 à 17:14
deja il faudrait que je comprenne pq tes requetes sont si lognues alors
que tu recupere que la valeur d un champ ... ensuite il faudrait
recherche pour un mot clef en SQL pour desinclure les reponses d une
variable a une requete enfin pour les imbriquer il suffit de faire un
squelette comme ca:
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 mai 2006 à 10:26
Hello,
j'ai pas tout suivi, un peu crevé, mais : tu ne peux pas faire 1 seule requête? Il me semble que seule un truc de ta clause where est différent. Donc, un OR sur ces 2 clauses OR (... AND ...) devrait te sortir tes résultats, sans doublon.
Sinon, il te suffit de mettre ton documents.numdoc dans un tableau (dans ta boucle : $iId[] = $row['numdoc_alias'] è- je mets alias parce que ta requête renvoie plusieurs champs numdoc, donc vaut mieux créer un alias si tu veux éviter une ambiguité).
Puis dans ta 2ème requête, tu ajoutes dans ta clause where un :
AND documents.numdoc NOT IN ('.implode (',', $iId).')
J'ai commencé par là mais la requete ne part pas quand je met OR.
$sql = 'SELECT calendrier.date, documents.typedoc, documents.numdoc, documents.provenance, documents.fichier, documents.commentaire, clients.societe, etat_facture.numdoc, etat_facture.etat, etat_facture.numdoc
FROM calendrier, documents, clients, etat_facture
WHERE etat_facture.numdoc=documents.numdoc
AND calendrier.numdoc=documents.numdoc
AND documents.numcli=clients.numcli
AND societe like "'.trim($list).'"
OR commentaire like "%'.trim($list).'%"
ORDER BY `Date` DESC';