MySQL - Select que muestre datos actuales(aclaracion y mi solucion)

 
Vista:
sin imagen de perfil
Val: 28
Ha aumentado su posición en 2 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Select que muestre datos actuales(aclaracion y mi solucion)

Publicado por David (16 intervenciones) el 16/01/2018 16:44:50
Bueno, si alguno de ustedes ha visto mis post anteriores de "como omitir un select" o darle prioridad a un condicion, sabran que no me supe explicar pero luego de varias horas intentando logre hacer lo que queria y quiero mostrarles como lo hice,
para empezar tengo una tabla de manejo,
1
2
3
+-------------+----+-----+-------+-------+
|fecha proceso|mesa|linea|candisp|canrest|
+-------------+----+-----+-------+-------+

por medio de un php se ingresan los datos, en la pagina donde se ingresan tien varios inputs los cuales se pueden dejar vacios, esto hace que cuando se ingresen algunos datos tambien se ingresen datos null,

1
2
3
4
5
6
+----------------+-----+-----+-------+-------+
|fecha proceso   |mesa |linea|candisp|canrest|
+----------------+-----+-----+-------+-------+
|12/12/2000 23:00|  1  |  1  |   34  |   23  |
|12/12/2000 23:00|  0  |  0  |   0   |   0   |
+----------------+-----+-----+-------+-------+

en otro html tengo este codigo:

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
<table border="2.5px" class="t3">
                <tr>
                    <td class="prueba">&nbsp;&nbsp;PROVEEDOR: &nbsp;&nbsp;</td>
                    <td>&nbsp;&nbsp;
                        <?php
                        $query = $mysqli -> query ("select PROVEEDOR from manejo where MESA = 8 and LINEA= 1  order by FECHA_PROCESO desc limit 1");
                        while ($valores = mysqli_fetch_array($query)){
                        echo "&nbsp;&nbsp;". $valores ["PROVEEDOR"]."&nbsp;&nbsp;";
                        }
                    ?>&nbsp;&nbsp;
                    </td>
                    <td class="prueba">&nbsp;&nbsp;C. Disponibles:&nbsp;&nbsp;</td>
                    <td>&nbsp;&nbsp;
                        <?php
                        $query = $mysqli -> query ("select CANASTILLAS_DISPONIBLES from manejo where MESA = 8 and LINEA= 1 OR CANASTILLAS_DISPONIBLES=0  order by FECHA_PROCESO desc limit 1");
                        while ($valores = mysqli_fetch_array($query)){
                        echo "&nbsp;&nbsp;". $valores ["CANASTILLAS_DISPONIBLES"]."&nbsp;&nbsp;";
                        }
                    ?>&nbsp;&nbsp;
                    </td>
                </tr>
                <tr>
                    <td class="prueba">&nbsp;&nbsp;MESA:&nbsp;&nbsp;</td>
                    <td>&nbsp;&nbsp;
                        <?php
                        $query = $mysqli -> query ("select MESA from manejo where MESA = 8 and LINEA= 1  order by FECHA_PROCESO desc limit 1");
                        while ($valores = mysqli_fetch_array($query)){
                        echo "&nbsp;&nbsp;". $valores ["MESA"]."&nbsp;&nbsp;";
                        }
                    ?>&nbsp;&nbsp;
                    </td>
                    <td class="prueba">&nbsp;&nbsp;C. Asiganadas:&nbsp;&nbsp;</td>
                    <td>&nbsp;&nbsp;
                        <?php
                        $query = $mysqli -> query ("select CANASTILLAS_RESTANTES from manejo where MESA = 8 and LINEA= 1  order by FECHA_PROCESO desc limit 1");
                        while ($valores = mysqli_fetch_array($query)){
                        echo "&nbsp;&nbsp;". $valores ["CANASTILLAS_RESTANTES"]."&nbsp;&nbsp;";
                        }
                    ?>&nbsp;&nbsp;
                    </td>
                </tr>
                <tr>
                    <td>
                    </td>
                    <td></td>
                    <td class="prueba">&nbsp;&nbsp;C. Restantes:&nbsp;&nbsp;</td>
                    <td>
                       &nbsp;&nbsp;
                    <?php
                        $query = $mysqli -> query ("SELECT (CANASTILLAS_DISPONIBLES-CANASTILLAS_RESTANTES) as tr FROM `manejo` WHERE LINEA=1  and mesa=8  OR CANASTILLAS_DISPONIBLES=0  order by FECHA_PROCESO desc limit 1");
                        while ($valores = mysqli_fetch_array($query)){
                        echo "&nbsp;&nbsp;". $valores ["tr"]."&nbsp;&nbsp;";
                        }
                    ?>&nbsp;&nbsp;
                    </td>
                </tr>
            </table>
este codigo lo que hace es crear una tabla(html) en donde me va a mostrar los datos que se ingresaron en la tabla de manejo (esta es solo una tabla especifica para la linea y la mesa, pero son 30 tablas y cono coloco el codigo completo por que sencillamente es muy largo y repetitivo), ahora el problmea era que el codigo funcionaba y me mostraba los datos, pero cuando yo hacia un segundo ingreso ejemplo :
1
2
3
4
5
6
+----------------+-----+-----+-------+-------+
|fecha proceso   |mesa |linea|candisp|canrest|
+----------------+-----+-----+-------+-------+
|12/12/2000 23:30|  2  |  2  |   44  |   2  |
|12/12/2000 23:30|  0  |  0  |   0   |   0   |
+----------------+-----+-----+-------+-------+
me mostraba los datos del ingreso pero tambien me mostraba los datos del ingreso pasado, y el objetivo es que con cada ingreso nuevo "se reiniciaran" las tablas y quedaran en cero.
asi que tenia que cambiar las sentencia SQL para que me mostrar lo que necesito no mas, y despues de horas y gracias a su ayuda probe la sigueinte consulta:
1
SELECT * FROM MANEJO WHERE (FECHA_PROCESO BETWEEN FECHA_PROCESO AND NOW()) and (MESA=2 AND LINEA=2) or linea=0   ORDER BY FECHA_PROCESO DESC LIMIT 1

(esta es la nueva sentencia, en el codigo de la tabla esta la que usaba antes)

no estoy seguro si lo que voy a escribir es correcto totalmente pero fue lo que hice gracias a sus explicacion sobre todo de leonardo;
lo primero que hice fue usar between que me mostrara lo ultimo ingresado comparado con la fecha actual, luego de eso usando parentecis usando AND hice que me mostrara los datos de la linea 2 y mesa 2, y con la sentencia OR linea=0 me aseguro de que me muestre los valores nulos cuando la fecha es la misma.
expero haberme explicado y les doy gracias a todos, no solo por las respuestas si no por el tiempo.
saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder