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

SQL Oracle Discussion :

Problème sur un SELECT avec deux conditions (AND)


Sujet :

SQL Oracle

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut Problème sur un SELECT avec deux conditions (AND)
    Bonjour,

    Je cherche à récupérer un identifiant permanent d'un client en le cherchant dans la table à partir d'un numéro de venue (iep_ide), et cette requête ne fonctionne pas. En gros, il faut récuperer le dernier numéro de venue, MAIS, qu'il soit aussi non annulé, d'où la deuxième condition (après le AND) qui vérifie si la durée du séjour est de plus d'une seconde.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req="SELECT iep_ide FROM  pa_pas WHERE pat_ipp='".$ipp."' AND (PA_PAS.pas_per_fin - PA_RES_PAT.pas_per_deb) > (to_date('20091020080001','YYYYMMDDHH24MISS') - to_date('20091020080000','YYYYMMDDHH24MISS'))";
    $statement = oci_parse ($conn, $req);
    echo $statement;
    oci_execute ($statement);
    $iep=oci_fetch_array($statement);
    La requête SELECT max(iep_ide) from pa_pas where pat_ipp like $ipp; fonctionne pourtant, je ne comprends pas trop

    Merci d'avance

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Bonjour,
    cette requête ne fonctionne pas.
    C'est à dire ? Message d'erreur ? Pas les bonnes données ?


    PS : petite opti : 1 seconde c'est 1/24/3600 jour (1/24 pour une heure, 3600 s par heure)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     (TO_DATE('20091020080001','YYYYMMDDHH24MISS') - TO_DATE('20091020080000','YYYYMMDDHH24MISS')) 
    à remplacer par 
    1 / 24 / 3600
    et si pas_per_fin et pas_per_deb sont de type DATE et pas TIMESTAMP, alors simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PA_RES_PA.pas_per_fin > PA_RES_PAT.pas_per_deb
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2015
    Messages : 11
    Points : 3
    Points
    3
    Par défaut
    Bonjour McM,

    Je vous met tout mon code ça sera surement plus facile pour comprendre :

    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
    158
    159
    160
    161
     
    <!DOCTYPE html>
    <html>
     
    <head>
        <title>Page Title</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
        <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
        <script type="text/javascript" src="js/jquery-barcode.min.js"></script>
        <script>
            $(document).bind('mobileinit', function() {
                $.mobile.changePage.defaults.changeHash = false;
                $.mobile.hashListeningEnabled = false;
                $.mobile.pushStateEnabled = false;
            });
     
        </script>
        <script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
        <script type="text/javascript" src="js/remodal.min.js"></script>
        <link rel="stylesheet" href="css/remodal.css">
        <link rel="stylesheet" href="css/remodal-default-theme.css">
     
    </head>
     
    <body>
     
        <div class="remodal" data-remodal-id="modal" role="dialog" aria-labelledby="modal1Title" aria-describedby="modal1Desc">
            <div>
                <h2 id="modal1Desc">Impression de code barre</h2>
                <br>
                <p id="modal1Desc">
                    Combien voulez vous en imprimer?
                </p>
                <p>Cliquez sur un des chiffres.</p>
            </div>
            <br>
            <button data-remodal-action="confirm" class="remodal-confirm" style="border-radius: 6px" value="1" id="btn1">1</button>
            <button data-remodal-action="confirm" class="remodal-confirm" style="border-radius: 6px" value="2" id="btn2">2</button>
            <button data-remodal-action="confirm" class="remodal-confirm" style="border-radius: 6px" value="3" id="btn3">3</button>
            <button data-remodal-action="confirm" class="remodal-confirm" style="border-radius: 6px" value="4" id="btn4">4</button>
            <button data-remodal-action="confirm" class="remodal-confirm" style="border-radius: 6px" value="5" id="btn5">5</button>
        </div>
     
        <div data-role="page">
            <div data-role="content">
                <div class="ui-grid-c" id="foo">
                </div>
            </div>
            <div data-role="footer" id="foot">
                <button class="ui-btn" style="width:100%" id="print">Imprimer</button>
            </div>
        </div>
     
    <?php
     /*$n= (COUNT(iep_ide) FROM pa_iep);
      $test = "false";
      WHILE($test == "false")
    	  IF (PA_RES_PAT.pa_res_pat_per_fin - PA_RES_PAT.pa_res_pat_per_deb > to_date('20091020080001','YYYYMMDDHH24MISS') - to_date('20091020080000','YYYYMMDDHH24MISS') ,
      $req="SELECT max(iep_ide) from pa_iep where pat_ipp like $ipp"& $test="true", $req = "SELECT iep[n-1] from pa_iep where pat_ipp like $ipp" & $test="false" & $n=$n-1)*/
     
      $ipp=$_REQUEST["sipp"]; 
     
    $conn = oci_connect("pa_ins01","pa_ins01","TRA_REFERENCE_01_E.WORLD");
    print_r(oci_error());
     
    $req = "SELECT iep_ide from pa_iep where pat_ipp like $ipp";
    // $req="SELECT iep_ide FROM  PA_PAT, PA_PAS, PA_RES_PAT WHERE PA_PAT.PAT_IPP = PA_PAS.PAT_IPP And PA_PAS.PAS_IPS  = PA_RES_PAT.PAS_IPS and pat_ipp like ".$ipp."";
    // $req="SELECT iep_ide FROM  pa_pas WHERE pat_ipp='".$ipp."' AND (PA_PAS.pas_per_fin - PA_RES_PAT.pas_per_deb) > (to_date('20091020080001','YYYYMMDDHH24MISS') - to_date('20091020080000','YYYYMMDDHH24MISS'))";
    // $req="SELECT iep_ide FROM  PA_PAT, PA_PAS, PA_RES_PAT WHERE PA_PAT.PAT_IPP = PA_PAS.PAT_IPP And PA_PAS.PAS_IPS  = PA_RES_PAT.PAS_IPS AND PA_PAT.PAT_STU <> '4' and pat_ipp like ".$ipp." AND (PA_PAS.pas_per_fin - PA_RES_PAT.pas_per_deb) > (to_date('20091020080001','YYYYMMDDHH24MISS') - to_date('20091020080000','YYYYMMDDHH24MISS'))";
     
    $statement = oci_parse ($conn, $req);
    // echo " statement:" ;
    // echo $statement;
    oci_execute ($statement);
    $i=0;
    while(($row=oci_fetch_array($statement)) !=false){
    	echo "iep ". $i .": " ;
    	print_r($row);
    	$i++;
    }
    // $iep=oci_fetch_array($statement);
     settype($row,"int");
     echo "iep :";
     print_r($row[1]);
     
    // $statement = oci_parse ($conn, $req);
    // echo " statement:" ;
    // echo $statement;
    // oci_execute ($statement);
    // $iep=oci_fetch_array($statement);
    // print_r($iep_int);
    // echo "<br>iep".$iep_int[0];
     
    ?>
     
        <script type="text/javascript">
            var inst = $('[data-remodal-id=modal]').remodal();
            inst.open();
     
            $('#print').bind('click', 'print', function() {
                $('#print').hide();
                $('#foot').hide();
                window.print();
            });
     
            $('#btn1').bind('click', '.remodal', function() {
                console.log('Confirmation button is clicked 1');
                remplissage_codes(1);
            });
     
            $('#btn2').bind('click', '.remodal', function() {
                console.log('Confirmation button is clicked 2');
                remplissage_codes(2);
            });
     
            $('#btn3').bind('click', '.remodal', function() {
                console.log('Confirmation button is clicked 3');
                remplissage_codes(3);
            });
     
            $('#btn4').bind('click', '.remodal', function() {
                console.log('Confirmation button is clicked 4');
                remplissage_codes(4);
            });
     
            $('#btn5').bind('click', '.remodal', function() {
                console.log('Confirmation button is clicked 5');
                remplissage_codes(5);
            });
     
            jQuery.fn.center = function() {
                this.css("position", "absolute");
                this.css("top", Math.max(0, (($(window).height() - $(this).outerHeight()) / 2) + $(window).scrollTop()) + "px");
                this.css("left", Math.max(0, (($(window).width() - $(this).outerWidth()) / 2) + $(window).scrollLeft()) + "px");
                return this;
            }
     
            function remplissage_codes($nbr) {
                $("remodal").remove();
                $("remodal-wrapper remodal-is-opened").remove();
     
                var divclass = ['ui-block-a', 'ui-block-b', 'ui-block-c', 'ui-block-d'];
     
                for ($i = 0; $i < $nbr; $i++) {
                    $("#foo").append("<div class=\"" + divclass[$i % 4] + "\" id=\"c" + $i + "\" style=\"margin-bottom:12px\"></div>");
                }
     
                for ($i = 0; $i < $nbr; $i++) {
                    $("#c" + $i).barcode(<?php echo "'".$iep[0]."'";?>, "code128", {
                        barWidth: 2,
                        barHeight: 95
                    });
                }
            }
     
        </script>
     
    </body>
     
    </html>
    Je souhaite donc récuperer un numéro de venue de client, à partir de son matricule, pour le coder sur un code barre et ensuite l'imprimer

    Le problème vient de la partie PhP, logiquement le JS est bon.
    Donc lorsque je fais la première requête (SELECT max(iep_ide) from pa_pas where pat_ipp like $ipp), le code barre s'affiche correctement. Avec les autres conditions (le séjour doit être NON annulé), ce n'est plus le cas.
    Egalement, je souhaiterai classer ces numéros par ordre CROISSANT, mais il semble qu'il fasse seulement de la comparaison chiffre à chiffre, donc théoriquement il classerait 11 plus grand que 1 000 000. Je pense que ça vient du fait que les numéros sont écrit en varchar au lieu d'int (ce n'est pas moi qui gère ces bases et je n'y ai pas accès). Mais même avec ces infos je n'arrive pas à aboutir sur un classement pertinent.

    PS: il y a beaucoup de code en commentaire et c'est un peu le fouillis dans la partie PhP car je suis actuellement en train d'essayer diverses solutions, mais en vain, d'avance désolé !

    PPS: je ne sais pas non plus le type des dates d'entrée et sortie du coup... mais je suppose qu'elle ne sont pas en format date si même les matricules ne sont pas sous format int

Discussions similaires

  1. Problème sur requête select avec les caractères spéciaux
    Par Julien698 dans le forum Développement
    Réponses: 3
    Dernier message: 06/08/2015, 14h08
  2. Select avec 2 conditions sur même champs
    Par Floyus dans le forum Requêtes
    Réponses: 3
    Dernier message: 05/06/2013, 09h55
  3. Select sur 2 tables avec deux colonnes identiques
    Par LsMarx dans le forum Requêtes
    Réponses: 4
    Dernier message: 07/08/2012, 16h08
  4. Réponses: 4
    Dernier message: 17/11/2011, 16h59
  5. Réponses: 2
    Dernier message: 04/03/2010, 18h07

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