IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Problème requête sur stock


Sujet :

Langage SQL

  1. #1
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut Problème requête sur stock
    Bonjour à tous, j'ai un problème pourriez vous m'aider?

    voici une requête qui doit servir à récupérer les stocks supérieurs à zéro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POP_STOCK.ID_STOCk as ID_STOCK,DATE_RECEPTION,NUM_EN_COURS_DEG,REFERENCE,DESIGNATION,INDICE, QTE_PIECE_OK,QTE_PIECE_DRG,QTE_PIECE_NOK,TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') as DATE_RECEPTION,NOM_PERSONNE,NOM_EMPLACEMENT,ZONE, LOT_PSO,NOM_FOURNISSEUR,POP_STOCK.COMMENTAIRE AS COMMENTAIRE,NUM_PROJET,NUM_AFFAIRE,ID_STATUT_VALIDATION_QUALITE,QUANTITE_RECU, NB_PIECE_OK,NB_PIECE_DRG,NB_PIECE_NOK,SPLITER,POP_STOCK.ID_EN_COURS AS ID_EN_COURS,COMMENTAIRE_STOCK,POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS, NUM_ISSUS_LOT FROM POP_STOCK LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM WHERE 1=1 AND LOT_ANNULE = '0' AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') )AND ID_STATUT_VALIDATION_QUALITE = '2' OR ID_STATUT_VALIDATION_QUALITE = '1'ORDER BY NUM_EN_COURS_DEG DESC
    ou je filtre avec le stocke donc cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0')
    mais cela ne fonctionne pas mais par contre cette requête fonctionne celle-ci est pour les stock égale à zéro pourtant dans la requête précédante seul le signe diffère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT POP_STOCK.ID_STOCk as ID_STOCK,DATE_RECEPTION,NUM_EN_COURS_DEG,REFERENCE,DESIGNATION,INDICE, QTE_PIECE_OK,QTE_PIECE_DRG,QTE_PIECE_NOK,TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') as DATE_RECEPTION,NOM_PERSONNE,NOM_EMPLACEMENT,ZONE, LOT_PSO,NOM_FOURNISSEUR,POP_STOCK.COMMENTAIRE AS COMMENTAIRE,NUM_PROJET,NUM_AFFAIRE,ID_STATUT_VALIDATION_QUALITE,QUANTITE_RECU, NB_PIECE_OK,NB_PIECE_DRG,NB_PIECE_NOK,SPLITER,POP_STOCK.ID_EN_COURS AS ID_EN_COURS,COMMENTAIRE_STOCK,POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS, NUM_ISSUS_LOT FROM POP_STOCK LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM WHERE 1=1 AND LOT_ANNULE = '0' AND (QTE_PIECE_OK <= '0' AND QTE_PIECE_DRG <= '0' AND QTE_PIECE_NOK <= '0') AND ID_STATUT_VALIDATION_QUALITE = '2'ORDER BY NUM_EN_COURS_DEG DESC
    merci de votre aide n'hésitez pas si vous avez des questions.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Votre requête est illisible c'est la raison pour laquelle vous n'avez pas vu l'erreur de parenthèse à la fin

    Remettez la en forme pour mettre en évidence cet extrait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WHERE 1=1
      AND LOT_ANNULE = '0'
      AND (    QTE_PIECE_OK > '0'
           OR  QTE_PIECE_DRG > '0'
           OR  QTE_PIECE_NOK > '0')
      AND ID_STATUT_VALIDATION_QUALITE = '2'
      OR ID_STATUT_VALIDATION_QUALITE = '1'
    Il existe des sites qui mettent automatiquement en forme les requetes, par exemple : http://sqlformat.org/

    Notez que j'ai laissé votre "Where 1=1"
    et que j'ai enlevé un niveau de parenthèse inutiles
    Par contre je n'ai pas ajouté les parenthèses manquantes autour de la condition en rouge

    Votre 2ème requête fonctionne car elle, elle ne comporte pas cette erreur de parenthèses.
    Ceci devrait vous convaincre de l'utilité de présenter la requête sous forme lisible

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par kevin254kl Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    WHERE 1=1
      AND LOT_ANNULE = '0'
      AND (    QTE_PIECE_OK > '0'
           OR  QTE_PIECE_DRG > '0'
           OR  QTE_PIECE_NOK > '0')
      AND ID_STATUT_VALIDATION_QUALITE = '2'
      OR ID_STATUT_VALIDATION_QUALITE = '1'
    En complément a ce que dit Escartefigue, si vos colonnes comme QTE_PIECE_OK ou ID_STATUT_VALIDATION_QUALITE il est parfaitement stupide de les comparer à des chaines de caractères en faisant usage de l'apostrophe !
    Exemple :
    QTE_PIECE_OK > '0'
    Ce qui signifie supérieur au caractères 0 dans l'ordre alphabétique.

    Si ce sont bien des nombres, ce que je soupçonne, alors vous allez au devant de deux problèmes : résultat potentiellement faux et problèmes de performances.....

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour et merci de votre réponse,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    if(!isset($_SESSION['TAB2']) || $_GET['init'] == 1){
    	$tableau = array($_GET['f_numero_lot'],$_GET['emplacement'],$_GET['designation_stock'],$_GET['reference_stock'],$_GET['statut'],$_GET['zone']);
    	$_SESSION['TAB2'] = $tableau;
     
     
    }
     
    //format date pour un input date avec value: YYYY-MM-DD
    $requete1 = "SELECT POP_STOCK.ID_STOCk as ID_STOCK,DATE_RECEPTION,NUM_EN_COURS_DEG,REFERENCE,DESIGNATION,INDICE,
    	QTE_PIECE_OK,QTE_PIECE_DRG,QTE_PIECE_NOK,TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') as DATE_RECEPTION,NOM_PERSONNE,NOM_EMPLACEMENT,ZONE,
    	LOT_PSO,NOM_FOURNISSEUR,POP_STOCK.COMMENTAIRE AS COMMENTAIRE,NUM_PROJET,NUM_AFFAIRE,ID_STATUT_VALIDATION_QUALITE,QUANTITE_RECU,
    	NB_PIECE_OK,NB_PIECE_DRG,NB_PIECE_NOK,SPLITER,POP_STOCK.ID_EN_COURS AS ID_EN_COURS,COMMENTAIRE_STOCK,POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS,
    	NUM_ISSUS_LOT
    	FROM POP_STOCK
    	LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    	LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS
    	LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR
    	LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT
    	LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET
    	LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM
    	WHERE 1=1 AND LOT_ANNULE = '0'  ";
     
    /*if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    $requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    $requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    $requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    $requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != -1){
     
    		if ($_SESSION['TAB2'][4] == 2){
    		$statut_un = 1;
    		$requete1 .= " AND (QTE_PIECE_OK <= '0' AND QTE_PIECE_DRG <= '0' AND QTE_PIECE_NOK <= '0') ";
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = '2'";
    		}
    		elseif($_SESSION['TAB2'][4] == 1){
    		$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";
    		$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    		}
    		else{
    		$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";
    		$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    		}
    }*/
    var_dump($_SESSION['TAB2']);
    switch (true) {
        case ($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0'):
            $requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
            break;
    	case($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0'):
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0'):
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0'):
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0):
    		if ($_SESSION['TAB2'][4] == 2){
    		$requete1 .= " AND (QTE_PIECE_OK <= '0' AND QTE_PIECE_DRG <= '0' AND QTE_PIECE_NOK <= '0') ";
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = '2'";
    		}
    		elseif($_SESSION['TAB2'][4] == 1){
    		$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";// problème ici voir le signe  supérieur pourquoi pas interprété?
    		$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    		}
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0'):
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')";
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')"; 
    		break;
    	default:
    	if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    	$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    	if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    	$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    	if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    	$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    	if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    	$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    	if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != -1){
     
    			if ($_SESSION['TAB2'][4] == 2){
    			$statut_un = 1;
    			$requete1 .= " AND (QTE_PIECE_OK <= 0 AND QTE_PIECE_DRG <= 0 AND QTE_PIECE_NOK <= 0) ";
    			$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = '2'";
    			}
    			elseif($_SESSION['TAB2'][4] == 1){ 
    			$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";
    			$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    			}
    			else{
    			$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";
    			$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    			} 
    	} 
    	/*if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')";*/
    }
     $requete1 .= "ORDER BY NUM_EN_COURS_DEG DESC"; echo $requete1;
    $statement1 = oci_parse($conn, $requete1); 
    oci_execute($statement1,OCI_COMMIT_ON_SUCCESS);
    $requete2 = "SELECT ID_SITE,CODE_SITE,LABEL_SITE FROM POP_SITE ORDER BY CODE_SITE ASC";
    $statement2 = oci_parse($conn, $requete2); 
    oci_execute($statement2,OCI_COMMIT_ON_SUCCESS);

    cela ne marche pas le problème dans ma requête doit être autre j'ai essayé de mettre dans la requête qui est censé fonctionné supérieur aux quantité cela me renvoit encore les quantités encore inférieur ou égal à zéro je suppose que le problème vient d'ailleurs merci pour votre aide.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    soit la requête que vous avez publié n'est pas la bonne, soit vous n'avez aucunement tenu compte de mes remarques ni de celles de SQLPro :

    - vous testez toujours des montants en utilisant des quote c'est à dire avec des valeurs alphabétiques (lignes 137, 141, 145 de votre requête)
    - vous avez toujours votre condition OR (lignes 100, 142 et 146 de votre requête) qui rend vos tests de montant inopérants
    - vous avez toujours votre "where 1=1"
    - votre requete reste difficile à lire car non formatée, est-ce que vous utilisez un logiciel qui crée la requête sous cette forme ?
    Si c'est le cas vous pourriez faire l'effort de présentation pour que les contributeurs s'y retrouvent

  6. #6
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Merci de votre réponse et désoler pour la mauvaise présentation,

    voici les trois requêtes généré ou j'ai pris vos remarques en compte requête différente de zéro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    SELECT POP_STOCK.ID_STOCk AS ID_STOCK,
           DATE_RECEPTION,
           NUM_EN_COURS_DEG,
           REFERENCE,
           DESIGNATION,
           INDICE,
           QTE_PIECE_OK,
           QTE_PIECE_DRG,
           QTE_PIECE_NOK,
           TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') AS DATE_RECEPTION,
           NOM_PERSONNE,
           NOM_EMPLACEMENT,
           ZONE,
           LOT_PSO,
           NOM_FOURNISSEUR,
           POP_STOCK.COMMENTAIRE AS COMMENTAIRE,
           NUM_PROJET,
           NUM_AFFAIRE,
           ID_STATUT_VALIDATION_QUALITE,
           QUANTITE_RECU,
           NB_PIECE_OK,
           NB_PIECE_DRG,
           NB_PIECE_NOK,
           SPLITER,
           POP_STOCK.ID_EN_COURS AS ID_EN_COURS,
           COMMENTAIRE_STOCK,
           POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS,
           NUM_ISSUS_LOT
    FROM POP_STOCK
    LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS
    LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR
    LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT
    LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET
    LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM
    WHERE LOT_ANNULE = '0'
      AND ((QTE_PIECE_OK > 0
            OR QTE_PIECE_DRG > 0
            OR QTE_PIECE_NOK > 0)
           AND ID_STATUT_VALIDATION_QUALITE = 2)
    ORDER BY NUM_EN_COURS_DEG DESC
    requête égal à zéro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    SELECT POP_STOCK.ID_STOCk AS ID_STOCK,
           DATE_RECEPTION,
           NUM_EN_COURS_DEG,
           REFERENCE,
           DESIGNATION,
           INDICE,
           QTE_PIECE_OK,
           QTE_PIECE_DRG,
           QTE_PIECE_NOK,
           TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') AS DATE_RECEPTION,
           NOM_PERSONNE,
           NOM_EMPLACEMENT,
           ZONE,
           LOT_PSO,
           NOM_FOURNISSEUR,
           POP_STOCK.COMMENTAIRE AS COMMENTAIRE,
           NUM_PROJET,
           NUM_AFFAIRE,
           ID_STATUT_VALIDATION_QUALITE,
           QUANTITE_RECU,
           NB_PIECE_OK,
           NB_PIECE_DRG,
           NB_PIECE_NOK,
           SPLITER,
           POP_STOCK.ID_EN_COURS AS ID_EN_COURS,
           COMMENTAIRE_STOCK,
           POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS,
           NUM_ISSUS_LOT
    FROM POP_STOCK
    LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS
    LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR
    LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT
    LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET
    LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM
    WHERE LOT_ANNULE = '0'
      AND (QTE_PIECE_OK <= 0
           AND QTE_PIECE_DRG <= 0
           AND QTE_PIECE_NOK <= 0)
      AND ID_STATUT_VALIDATION_QUALIT
    le code php si cela peut vous être utile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    if(!isset($_SESSION['TAB2']) || $_GET['init'] == 1){
    	$tableau = array($_GET['f_numero_lot'],$_GET['emplacement'],$_GET['designation_stock'],$_GET['reference_stock'],$_GET['statut'],$_GET['zone']);
    	$_SESSION['TAB2'] = $tableau;
     
     
    }
     
    //format date pour un input date avec value: YYYY-MM-DD
    $requete1 = "SELECT POP_STOCK.ID_STOCk as ID_STOCK,DATE_RECEPTION,NUM_EN_COURS_DEG,REFERENCE,DESIGNATION,INDICE,
    	QTE_PIECE_OK,QTE_PIECE_DRG,QTE_PIECE_NOK,TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') as DATE_RECEPTION,NOM_PERSONNE,NOM_EMPLACEMENT,ZONE,
    	LOT_PSO,NOM_FOURNISSEUR,POP_STOCK.COMMENTAIRE AS COMMENTAIRE,NUM_PROJET,NUM_AFFAIRE,ID_STATUT_VALIDATION_QUALITE,QUANTITE_RECU,
    	NB_PIECE_OK,NB_PIECE_DRG,NB_PIECE_NOK,SPLITER,POP_STOCK.ID_EN_COURS AS ID_EN_COURS,COMMENTAIRE_STOCK,POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS,
    	NUM_ISSUS_LOT
    	FROM POP_STOCK
    	LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    	LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS
    	LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR
    	LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT
    	LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET
    	LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM
    	WHERE  LOT_ANNULE = '0'  ";
     
    /*if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    $requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    $requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    $requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    $requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != -1){
     
    		if ($_SESSION['TAB2'][4] == 2){
    		$statut_un = 1;
    		$requete1 .= " AND (QTE_PIECE_OK <= '0' AND QTE_PIECE_DRG <= '0' AND QTE_PIECE_NOK <= '0') ";
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = '2'";
    		}
    		elseif($_SESSION['TAB2'][4] == 1){
    		$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";
    		$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    		}
    		else{
    		$requete1 .= " AND ((QTE_PIECE_OK > '0' OR QTE_PIECE_DRG > '0' OR QTE_PIECE_NOK > '0') AND ID_STATUT_VALIDATION_QUALITE = '2')";
    		$requete1 .= " OR ID_STATUT_VALIDATION_QUALITE = '1'";
    		}
    }*/
    var_dump($_SESSION['TAB2']);
    switch (true) {
        case ($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0'):
            $requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
            break;
    	case($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0'):
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0'):
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0'):
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0):
    		if ($_SESSION['TAB2'][4] == 2){
    		$requete1 .= " AND (QTE_PIECE_OK <= 0 AND QTE_PIECE_DRG <= 0 AND QTE_PIECE_NOK <= 0) ";
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 2";
    		}
    		elseif($_SESSION['TAB2'][4] == 1){
    		$requete1 .= " AND ((QTE_PIECE_OK > 0 OR QTE_PIECE_DRG > 0 OR QTE_PIECE_NOK > 0) AND ID_STATUT_VALIDATION_QUALITE = 2)";// problème ici voir le signe  supérieur pourquoi pas interprété?
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 1";
    		}
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    		if($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0')
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')"; 
    		break;
    	case($_SESSION['TAB2'][5] != null && $_SESSION['TAB2'][5] != '0'):
    		$requete1 .= " AND UPPER(ZONE) LIKE UPPER('%".$_SESSION['TAB2'][5]."%')";
    		if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    		$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    		if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    		$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    		if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    		$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    		if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    		$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')"; 
    		break;
    	default:
    	if($_SESSION['TAB2'][0] != null && $_SESSION['TAB2'][0] != '0')
    	$requete1 .= " AND NUM_EN_COURS_DEG LIKE '%".$_SESSION['TAB2'][0]."%'";
    	if($_SESSION['TAB2'][1] != null && $_SESSION['TAB2'][1] != '0')
    	$requete1 .= " AND POP_EMPLACEMENT.ID_EMPLACEMENT= ".$_SESSION['TAB2'][1];
    	if($_SESSION['TAB2'][2] != null && $_SESSION['TAB2'][2] != '0')
    	$requete1 .= " AND UPPER(DESIGNATION) LIKE UPPER('%".$_SESSION['TAB2'][2]."%')";
    	if($_SESSION['TAB2'][3] != null && $_SESSION['TAB2'][3] != '0')
    	$requete1 .= " AND UPPER(REFERENCE) LIKE UPPER('%".$_SESSION['TAB2'][3]."%')";
    	if($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != -1){
     
    			if ($_SESSION['TAB2'][4] == 2){
    			$statut_un = 1;
    			$requete1 .= " AND (QTE_PIECE_OK <= 0 AND QTE_PIECE_DRG <= 0 AND QTE_PIECE_NOK <= 0) ";
    			$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 2";
    			}
    			elseif($_SESSION['TAB2'][4] == 1){ 
    			$requete1 .= " AND ((QTE_PIECE_OK > 0 OR QTE_PIECE_DRG > 0 OR QTE_PIECE_NOK > 0) AND ID_STATUT_VALIDATION_QUALITE = 2)";
    			$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 1";
    			}
    			else{
    			$requete1 .= " AND ((QTE_PIECE_OK > 0 OR QTE_PIECE_DRG > 0 OR QTE_PIECE_NOK > 0) AND ID_STATUT_VALIDATION_QUALITE = 2)";
    			$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 1";
    			} 
    	}
    autre chose dans le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0):
    		if ($_SESSION['TAB2'][4] == 2){
    		$requete1 .= " AND (QTE_PIECE_OK <= 0 AND QTE_PIECE_DRG <= 0 AND QTE_PIECE_NOK <= 0) ";
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 2";
    		}
    qui me renvoit bien les stocks à zéro et que je pensais qu'il fonctionnait j'ai essayé de changer les signes par supérieur il me renvoit encore les stocks à zéro, puis en ajoutant des caractères pour générer une erreur oracle me renvoit une erreur donc je passe bien par ce teste, finalement je pense que ce test n'ai pas effectué j'en est eu l’illusion car autre chose permet de récupérer les les stocks à zéro donc aucun des test n'ai effectué mais la requête est bien exécutée puisque je récupère un affichage, ce n'ai aps moi qui est écrit le code je dois juste le déboguer voilà pourquoi cela est aussi difficile pour moi désolée si je ne suis pas claire n'hésitez pas pour les question et encore merci de me consacrer du temps.

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 912
    Points
    38 912
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par kevin254kl Voir le message
    autre chose dans le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case($_SESSION['TAB2'][4] != null && $_SESSION['TAB2'][4] != 0):
    		if ($_SESSION['TAB2'][4] == 2){
    		$requete1 .= " AND (QTE_PIECE_OK <= 0 AND QTE_PIECE_DRG <= 0 AND QTE_PIECE_NOK <= 0) ";
    		$requete1 .= " AND ID_STATUT_VALIDATION_QUALITE = 2";
    		}
    qui me renvoit bien les stocks à zéro et que je pensais qu'il fonctionnait j'ai essayé de changer les signes par supérieur il me renvoit encore les stocks à zéro, puis en ajoutant des caractères pour générer une erreur oracle me renvoit une erreur donc je passe bien par ce teste, finalement je pense que ce test n'ai pas effectué j'en est eu l’illusion car autre chose permet de récupérer les les stocks à zéro donc aucun des test n'ai effectué mais la requête est bien exécutée puisque je récupère un affichage, ce n'ai aps moi qui est écrit le code je dois juste le déboguer voilà pourquoi cela est aussi difficile pour moi désolée si je ne suis pas claire n'hésitez pas pour les question et encore merci de me consacrer du temps.
    Pour en avoir le cœur net, exécutez votre requete hors code php, si vous prenez bien en compte le code ci-dessus, vous ne devriez afficher que les stocks dont les 3 quantités sont inférieures ou égales à zéro.

  8. #8
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    En effet,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    SELECT POP_STOCK.ID_STOCk AS ID_STOCK,
           DATE_RECEPTION,
           NUM_EN_COURS_DEG,
           REFERENCE,
           DESIGNATION,
           INDICE,
           QTE_PIECE_OK,
           QTE_PIECE_DRG,
           QTE_PIECE_NOK,
           TO_CHAR(DATE_RECEPTION,'DD/MM/YYYY') AS DATE_RECEPTION,
           NOM_PERSONNE,
           NOM_EMPLACEMENT,
           ZONE,
           LOT_PSO,
           NOM_FOURNISSEUR,
           POP_STOCK.COMMENTAIRE AS COMMENTAIRE,
           NUM_PROJET,
           NUM_AFFAIRE,
           ID_STATUT_VALIDATION_QUALITE,
           QUANTITE_RECU,
           NB_PIECE_OK,
           NB_PIECE_DRG,
           NB_PIECE_NOK,
           SPLITER,
           POP_STOCK.ID_EN_COURS AS ID_EN_COURS,
           COMMENTAIRE_STOCK,
           POP_EN_COURS.COMMENTAIRE AS COMMENTAIRE_EN_COURS,
           NUM_ISSUS_LOT
    FROM POP_STOCK
    LEFT JOIN POP_PERSONNE ON POP_STOCK.ID_PERSONNE = POP_PERSONNE.ID_PERSONNE
    LEFT JOIN POP_EN_COURS ON POP_EN_COURS.ID_EN_COURS = POP_STOCK.ID_EN_COURS
    LEFT JOIN POP_FOURNISSEUR ON POP_FOURNISSEUR.ID_FOURNISSEUR = POP_EN_COURS.ID_FOURNISSEUR
    LEFT JOIN POP_EMPLACEMENT ON POP_EMPLACEMENT.ID_EMPLACEMENT = POP_STOCK.ID_EMPLACEMENT
    LEFT JOIN POP_PROJET ON POP_PROJET.ID_PROJET = POP_EN_COURS.ID_PROJET
    LEFT JOIN POP_DM ON POP_DM.ID_DM = POP_EN_COURS.ID_DM
    WHERE ((QTE_PIECE_OK > 0
            OR QTE_PIECE_DRG > 0
            OR QTE_PIECE_NOK > 0)
           AND ID_STATUT_VALIDATION_QUALITE = 2)
    ORDER BY NUM_EN_COURS_DEG DESC
    cette requête fonctionne le problème venait de lot_annule = 0 cela était pratiquement tous le temps vrai merci encore bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème requête sur trois tables
    Par marcuzzz dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/09/2010, 20h17
  2. [MySQL] Problème requètes sur 2 tables
    Par tripsi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/03/2010, 16h52
  3. [AC-2007] Problème requête sur 1 table en passant par une association
    Par ganon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 30/08/2009, 15h33
  4. [SQL] Problème requête sur 2 tables
    Par temperature dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 20/04/2006, 12h05
  5. problèmes requètes sur vieilles versions de SQL TALK (1993)
    Par totogenie dans le forum Langage SQL
    Réponses: 11
    Dernier message: 24/01/2006, 17h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo