Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] INSERT SELECT salta valores!

Estas en el tema de INSERT SELECT salta valores! en el foro de PHP en Foros del Web. Buen día, ya había abierto este tema, solo que quedó olvidado. Tengo un INSERT SELECT, el problema es que está saltando filas; al principio pensé ...
  #1 (permalink)  
Antiguo 27/11/2013, 09:12
 
Fecha de Ingreso: mayo-2013
Mensajes: 19
Antigüedad: 10 años, 11 meses
Puntos: 0
INSERT SELECT salta valores!

Buen día, ya había abierto este tema, solo que quedó olvidado.

Tengo un INSERT SELECT, el problema es que está saltando filas; al principio pensé que era el PHP, pero me di cuenta que no, ya que pegando el query directo en la consola SQL si se completa.

El PHP es el siguiente

Código PHP:
$query1="SELECT 
            unidades.id, 
            unidades.codigo, 
            unidades.nombre, 
            unidades.tipo  
        FROM 
            unidades 
        WHERE 
            unidades.codigo != 'MANAGER' 
        AND 
            unidades.codigo != '' 
        ORDER BY 
            unidades.id ASC"

$sql1=mysql_query($query1); 
while(
$row1=mysql_fetch_row($sql1)) 
    { 
        if(
$row1[3]=="PLANTA"
        { 
            
$store=$row1[2]; 
        }else 
        { 
            
$selectsucursal="SELECT 
                relaciones_uniones.id_relacion, 
                relaciones.id_planta, 
                unidades.nombre as nombre 
            FROM 
                relaciones_uniones 
            Inner Join relaciones on relaciones.id=relaciones_uniones.id_relacion 
            Inner Join unidades on relaciones.id_planta=unidades.id 
            WHERE 
                relaciones_uniones.id_sucursal='"
.$row1[0]."' 
            ORDER BY 
                relaciones.fecha DESC"

            
$sqlsucursal=mysql_query($selectsucursal); 
            while(
$rowntea=mysql_fetch_row($sqlsucursal)) 
            { 
                
$store=$rowntea[2]; 
                break; 
            } 
        } 
         
         
        
$query2="INSERT INTO 
                    kpi 
                    (ciudad, planta, sucursal, canal, orden, ticket, tipo_orden, fecha_elaboracion, fecha_promesa, fecha_finalizacion, fecha_entrega, lote, tiempo_de_ciclo, usuario, cliente, direccion, colonia, municipio, cp, telefono, creditos, alta, total_prendas, tipo, descripcion, cantidad, color, precio_unitario, importe, subtotal, credito_usado, descuento, efectivo, estatus_transaccion, cambio, total, estatus) 
                SELECT  
                    'Guadalajara', 
                    '"
.$store."', 
                    '"
.$row1[2]."', 
                    '"
.$row1[3]."', 
                    "
.strtolower($row1[1])."_prendas_tickets.id_orden as orden, 
                    "
.strtolower($row1[1])."_prendas_tickets.id_ticket as ticket, 
                    'Venta', 
                    "
.strtolower($row1[1])."_tickets.fecha_aper as fecha_elaboracion, 
                    "
.strtolower($row1[1])."_tickets.fecha_promesa as fecha_promesa, 
                    "
.strtolower($row1[1])."_tickets.fecha_asignacion as fecha_finalizacion, 
                    "
.strtolower($row1[1])."_tickets.fecha_entrega as fecha_entrega, 
                    "
.strtolower($row1[1])."_tickets.id_lote as lote, 
                    ((lotes.hora_final)-(lotes.hora_inicio)) as tiempo_de_ciclo, 
                    "
.strtolower($row1[1])."_ordenes.atendio as usuario, 
                    "
.strtolower($row1[1])."_ordenes.nombre as cliente, 
                    clientes.direccion as direccion, 
                    clientes.colonia as colonia, 
                    clientes.ciudad as municipio, 
                    clientes.cp as cp, 
                    "
.strtolower($row1[1])."_ordenes.telefono as telefono, 
                    clientes.credito as creditos, 
                    clientes.fecha as alta, 
                    clientes.prendas as total_prendas, 
                    'Prenda', 
                    "
.strtolower($row1[1])."_prendas_tickets.prenda as descripcion, 
                    "
.strtolower($row1[1])."_prendas_tickets.cant as cantidad, 
                    "
.strtolower($row1[1])."_prendas_tickets.color as color, 
                    "
.strtolower($row1[1])."_prendas_tickets.precio_unitario as precio_unitario, 
                    "
.strtolower($row1[1])."_prendas_tickets.importe as importe, 
                    "
.strtolower($row1[1])."_ordenes.subtotal as subtotal, 
                    "
.strtolower($row1[1])."_ordenes.credito as credito_usado, 
                    "
.strtolower($row1[1])."_ordenes.frecuente as descuento, 
                    "
.strtolower($row1[1])."_ordenes.pago as efectivo, 
                    "
.strtolower($row1[1])."_ordenes.corte as estatus_transaccion, 
                    "
.strtolower($row1[1])."_ordenes.cambio as cambio, 
                    "
.strtolower($row1[1])."_ordenes.total as total, 
                    "
.strtolower($row1[1])."_tickets.estatus as estatus 
                FROM 
                    "
.strtolower($row1[1])."_prendas_tickets 
                Inner Join "
.strtolower($row1[1])."_tickets on ".strtolower($row1[1])."_tickets.id=".strtolower($row1[1])."_prendas_tickets.id_ticket 
                Inner Join "
.strtolower($row1[1])."_ordenes on ".strtolower($row1[1])."_ordenes.id=".strtolower($row1[1])."_prendas_tickets.id_orden 
                Inner Join clientes on clientes.telefono="
.strtolower($row1[1])."_ordenes.telefono 
                Inner Join lotes on lotes.id="
.strtolower($row1[1])."_tickets.id_lote 
                WHERE 
                    "
.strtolower($row1[1])."_tickets.fecha_aper>'2012-01-01' 
                    AND 
                    "
.strtolower($row1[1])."_tickets.fecha_aper<'2013-11-12' 
                ORDER BY 
                    "
.strtolower($row1[1])."_tickets.fecha_aper ASC 
                    "

                    
mysql_query($query2); 
            echo 
$row1[2]." ".mysql_affected_rows()."<br/>"
    } 
echo 
mysql_error(); 
y el ejemplo de uno de los querys resultantes es el siguiente:

Código:
INSERT INTO
kpi (ciudad, planta, sucursal, canal, orden, ticket, tipo_orden, fecha_elaboracion, fecha_promesa, fecha_finalizacion, fecha_entrega, lote, tiempo_de_ciclo, usuario, cliente, direccion, colonia, municipio, cp, telefono, creditos, alta, total_prendas, tipo, descripcion, cantidad, color, precio_unitario, importe, subtotal, credito_usado, descuento, efectivo, estatus_transaccion, cambio, total, estatus)
SELECT
'Guadalajara', 
'Manuel Acuña',
'Manuel Acuña',
'Planta',
maa001_prendas_tickets.id_orden as orden,
maa001_prendas_tickets.id_ticket as ticket,
'Venta',
maa001_tickets.fecha_aper as fecha_elaboracion,
maa001_tickets.fecha_promesa as fecha_promesa,
maa001_tickets.fecha_asignacion as fecha_finalizacion,
maa001_tickets.fecha_entrega as fecha_entrega,
maa001_tickets.id_lote as lote,
((lotes.hora_final)-(lotes.hora_inicio)) as tiempo_de_ciclo,
maa001_ordenes.atendio as usuario,
maa001_ordenes.nombre as cliente,
clientes.direccion as direccion,
clientes.colonia as colonia,
clientes.ciudad as municipio,
clientes.cp as cp,
maa001_ordenes.telefono as telefono,
clientes.credito as creditos, clientes.fecha as alta,
clientes.prendas as total_prendas,
'Prenda',
maa001_prendas_tickets.prenda as descripcion,
maa001_prendas_tickets.cant as cantidad,
maa001_prendas_tickets.color as color,
maa001_prendas_tickets.precio_unitario as precio_unitario,
maa001_prendas_tickets.importe as importe,
maa001_ordenes.subtotal as subtotal,
maa001_ordenes.credito as credito_usado,
maa001_ordenes.frecuente as descuento,
maa001_ordenes.pago as efectivo,
maa001_ordenes.corte as estatus_transaccion,
maa001_ordenes.cambio as cambio,
maa001_ordenes.total as total,
maa001_tickets.estatus as estatus
FROM
maa001_prendas_tickets
Inner Join maa001_tickets on maa001_tickets.id=maa001_prendas_tickets.id_ticket
Inner Join maa001_ordenes on maa001_ordenes.id=maa001_prendas_tickets.id_orden
Inner Join clientes on clientes.telefono=maa001_ordenes.telefono Inner Join lotes on lotes.id=maa001_tickets.id_lote
ORDER BY
maa001_tickets.fecha_aper
ASC
Espero que alguien me pueda ayudar D: uso phpmyadmin :) muchas gracias por su atención :B
  #2 (permalink)  
Antiguo 27/11/2013, 09:16
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: INSERT SELECT salta valores!

Contame un poquito más, como es que saltea registros?. Da alguno error o simplemente no los inserta?.

Saludos
  #3 (permalink)  
Antiguo 27/11/2013, 09:18
 
Fecha de Ingreso: mayo-2013
Mensajes: 19
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: INSERT SELECT salta valores!

No los inserta, deberían ser al rededor de 216,000 registros solo para el query de ejemplo, pero inserta solo 60,000 :/

perdón, me confundí de PHP, es el siguiente

Código PHP:
$query1="SELECT
            unidades.id,
            unidades.codigo,
            unidades.nombre,
            unidades.tipo 
        FROM
            unidades
        WHERE
            unidades.codigo != 'MANAGER'
        AND
            unidades.codigo != ''
        AND 
            unidades.activo = '1'
        ORDER BY
            unidades.id ASC"
;
$sql1=mysql_query($query1);
while(
$row1=mysql_fetch_row($sql1))
    {
        if(
$row1[3]=="PLANTA")
        {
            
$store=$row1[2];
        }else
        {
            
$selectsucursal="SELECT
                relaciones_uniones.id_relacion,
                relaciones.id_planta,
                unidades.nombre as nombre
            FROM
                relaciones_uniones
            Inner Join relaciones on relaciones.id=relaciones_uniones.id_relacion
            Inner Join unidades on relaciones.id_planta=unidades.id
            WHERE
                relaciones_uniones.id_sucursal='"
.$row1[0]."'
            ORDER BY
                relaciones.fecha DESC"
;
            
$sqlsucursal=mysql_query($selectsucursal);
            while(
$rowntea=mysql_fetch_row($sqlsucursal))
            {
                
$store=$rowntea[2];
                break;
            }
        }
        
mysql_free_result($sqlsucursal);
        
        
set_time_limit(3600);
        
        
        
$query2="INSERT INTO
                    kpi
                    (ciudad, planta, sucursal, canal, orden, ticket, tipo_orden, fecha_elaboracion, fecha_promesa, fecha_finalizacion, fecha_entrega, lote, tiempo_de_ciclo, usuario, cliente, direccion, colonia, municipio, cp, telefono, creditos, alta, total_prendas, tipo, descripcion, cantidad, color, precio_unitario, importe, subtotal, credito_usado, descuento, efectivo, estatus_transaccion, cambio, total, estatus)
                SELECT 
                    'Guadalajara',
                    '"
.$store."',
                    '"
.$row1[2]."',
                    '"
.$row1[3]."',
                    "
.strtolower($row1[1])."_prendas_tickets.id_orden as orden,
                    "
.strtolower($row1[1])."_prendas_tickets.id_ticket as ticket,
                    'Venta',
                    "
.strtolower($row1[1])."_tickets.fecha_aper as fecha_elaboracion,
                    "
.strtolower($row1[1])."_tickets.fecha_promesa as fecha_promesa,
                    "
.strtolower($row1[1])."_tickets.fecha_asignacion as fecha_finalizacion,
                    "
.strtolower($row1[1])."_tickets.fecha_entrega as fecha_entrega,
                    "
.strtolower($row1[1])."_tickets.id_lote as lote,
                    ((lotes.hora_final)-(lotes.hora_inicio)) as tiempo_de_ciclo,
                    "
.strtolower($row1[1])."_ordenes.atendio as usuario,
                    "
.strtolower($row1[1])."_ordenes.nombre as cliente,
                    clientes.direccion as direccion,
                    clientes.colonia as colonia,
                    clientes.ciudad as municipio,
                    clientes.cp as cp,
                    "
.strtolower($row1[1])."_ordenes.telefono as telefono,
                    clientes.credito as creditos,
                    clientes.fecha as alta,
                    clientes.prendas as total_prendas,
                    'Prenda',
                    "
.strtolower($row1[1])."_prendas_tickets.prenda as descripcion,
                    "
.strtolower($row1[1])."_prendas_tickets.cant as cantidad,
                    "
.strtolower($row1[1])."_prendas_tickets.color as color,
                    "
.strtolower($row1[1])."_prendas_tickets.precio_unitario as precio_unitario,
                    "
.strtolower($row1[1])."_prendas_tickets.importe as importe,
                    "
.strtolower($row1[1])."_ordenes.subtotal as subtotal,
                    "
.strtolower($row1[1])."_ordenes.credito as credito_usado,
                    "
.strtolower($row1[1])."_ordenes.frecuente as descuento,
                    "
.strtolower($row1[1])."_ordenes.pago as efectivo,
                    "
.strtolower($row1[1])."_ordenes.corte as estatus_transaccion,
                    "
.strtolower($row1[1])."_ordenes.cambio as cambio,
                    "
.strtolower($row1[1])."_ordenes.total as total,
                    "
.strtolower($row1[1])."_tickets.estatus as estatus
                FROM
                    "
.strtolower($row1[1])."_prendas_tickets
                Inner Join "
.strtolower($row1[1])."_tickets on ".strtolower($row1[1])."_tickets.id=".strtolower($row1[1])."_prendas_tickets.id_ticket
                Inner Join "
.strtolower($row1[1])."_ordenes on ".strtolower($row1[1])."_ordenes.id=".strtolower($row1[1])."_prendas_tickets.id_orden
                Inner Join clientes on clientes.telefono="
.strtolower($row1[1])."_ordenes.telefono
                Inner Join lotes on lotes.id="
.strtolower($row1[1])."_tickets.id_lote
                WHERE
                    "
.strtolower($row1[1])."_tickets.fecha_aper>'2012-01-01'
                    AND
                    "
.strtolower($row1[1])."_tickets.fecha_aper<'2013-11-12'
                ORDER BY
                    "
.strtolower($row1[1])."_tickets.fecha_aper ASC
                    "
;
                    
$resultado=mysql_query($query2);
            
            echo 
$row1[2]." ".mysql_affected_rows()."<br/>";
    }
echo 
mysql_error(); 
  #4 (permalink)  
Antiguo 27/11/2013, 09:57
Avatar de temaqueja  
Fecha de Ingreso: agosto-2002
Ubicación: /dev/null/
Mensajes: 399
Antigüedad: 21 años, 8 meses
Puntos: 4
Respuesta: INSERT SELECT salta valores!

Revisa si no quisiste usar left join en lugar de inner join, solo es cuestión de mirar que tienen esos 156k de registros de diferente respecto a los 60k que si entran.
__________________
_________________________
La computadora nació para resolver problemas que antes no existían
  #5 (permalink)  
Antiguo 27/11/2013, 10:16
 
Fecha de Ingreso: mayo-2011
Ubicación: Bs.As Argentina
Mensajes: 193
Antigüedad: 12 años, 10 meses
Puntos: 3
Respuesta: INSERT SELECT salta valores!

Claro yo me fijaría lo mismo que dice temaqueja, probaría con leftjoin o me fijaría los filtros a ver si están, iría probando.

Saludos
  #6 (permalink)  
Antiguo 27/11/2013, 15:38
 
Fecha de Ingreso: mayo-2013
Mensajes: 19
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: INSERT SELECT salta valores!

Muchas gracias, funcionó perfectamente con el Left Join.

Etiquetas: insert, mysql, phpmyadmin, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:38.