Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con not in

Estas en el tema de Problemas con not in en el foro de Mysql en Foros del Web. Hola. Estoy desarrollando una aplicación web para generar planillas de transporte, dependiendo de una tabla que contiene la información por persona de hora de recogida ...
  #1 (permalink)  
Antiguo 21/12/2010, 02:41
 
Fecha de Ingreso: diciembre-2010
Ubicación: Bucaramanga
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Información Problemas con not in

Hola.

Estoy desarrollando una aplicación web para generar planillas de transporte, dependiendo de una tabla que contiene la información por persona de hora de recogida y dirección. Buscando la mejor manera de tener la información lo mas práctica y a la ves clasificada manejo varias tablas. Entonces como para que me comprendan tenemos lo siguiente:
Tablas: Persona,malla,kardextransporte,direccionporpersona ,barrio,ciudad,subzonas,zona.
Persona: Datos de todas la personas a transportar
Malla: Información de la hora de recogida, periodo de recogida.
Kardextransporte: Información de los transportados.
Direccionporpersona:Direccion de las personas.
Subzonas: Clasificacion de los barrios para agrupar las personas y asi poder seleccionar organizar las planillas de transportes mas rapido.

La cuestion es la siguiente.



Cuando hago la consulta que me muestre las personas que no estan todavia en la tabla kardextransporte. La consulta que estoy utilizando es:

SELECT desc_Camp, ced_per, hora_mxt, hminutos_mxt, ampm_mxt, nom_per, apell_per, desc_dirppal, nrodp_dir, dirs_dir, nro_dir, IF( piso_dir = 'NA', '', piso_dir ) AS Piso, IF( npiso_dir =0, '', npiso_dir ) AS NPISO, IF( torre_dir = 'NA', '', torre_dir ) AS TORRE, IF( ntorre_dir = 'NA', '', ntorre_dir ) AS NTORRE, desc_conj, desc_bar, cel_per, tel_per, desc_ciud, cod_subz, desde_mxt, hasta_mxt, malla_mxt
FROM persona
LEFT JOIN mallaxcoord ON ( ced_per = mxc_tel )
LEFT JOIN mallaxtele ON ( mxc_tel = teleo_mxt )
LEFT JOIN dirxper ON ( teleo_mxt = per_dir )
LEFT JOIN dir_ppal ON ( dirp_dir = cod_dirppal )
LEFT JOIN conjunto ON ( conj_dir = cod_conj )
LEFT JOIN conjxsubz ON ( conjunto_cxs = cod_conj )
LEFT JOIN barrio ON ( bar_dir = cod_barr )
LEFT JOIN barxsubz ON ( barrio_bxs = cod_barr )
LEFT JOIN subzonas ON ( subzona_bxs = cod_subz )
LEFT JOIN ciudad ON ( ciud_bar = cod_ciud )
LEFT JOIN topxcoord ON ( teleo_mxt = tele_txc )
LEFT JOIN campana ON ( cam_txc = cod_camp )
LEFT JOIN ruta ON ( r_nro = zon_subz )
WHERE activacion = '1' AND cod_subz = '3' AND
mallaxtele.teleo_mxt NOT IN (SELECT kt_pasajero from kdxtransporte where kt_nplanilla) ORDER BY malla_mxt

Cuando la ejecuto desde la aplicación web me sale error.
[Error en la consulta de conteo de registros: SELECT COUNT(*) FROM kdxtransporte where kt_nplanilla) ORDER BY malla_mxt. Mysql dijo: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY malla_mxt' at line 1]

Pero al ejecutar la misma consulta desde el PHPMYADMIN funciona correctamente.

Versión del servidor: 5.0.33 (MYSQL)
Version phpMyAdmin - 2.9.2
  #2 (permalink)  
Antiguo 21/12/2010, 02:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Problemas con not in

Código MySQL:
Ver original
  1. where kt_nplanilla) ORDER BY

Ese WHERE esta mal construido.

La sintaxis correcta es esta

...WHERE nombrecampo operador valor...

p.e.

....WHERE nombre='José'

....WHERE kt_nplanilla=25

No se si me explico.... en phpmyadmin tampoco debería funcionar...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 21/12/2010, 09:23
 
Fecha de Ingreso: diciembre-2010
Ubicación: Bucaramanga
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Respuesta: Problemas con not in

Gracias quimfv, corregí el error pero sigue saliendo el error

Código PHP:
SELECT desc_Campced_perhora_mxthminutos_mxtampm_mxtnom_perapell_perdesc_dirppalnrodp_dirdirs_dirnro_dir, IF( piso_dir =  'NA',  ''piso_dir ) AS Piso, IF( npiso_dir =0,  ''npiso_dir ) AS NPISO, IF( torre_dir =  'NA',  ''torre_dir ) AS TORRE, IF( ntorre_dir =  'NA',  ''ntorre_dir ) AS NTORREdesc_conjdesc_barcel_pertel_perdesc_ciudcod_subzdesde_mxthasta_mxtmalla_mxt
FROM persona
LEFT JOIN mallaxcoord ON 
ced_per mxc_tel 
LEFT JOIN mallaxtele ON mxc_tel teleo_mxt 
LEFT JOIN dirxper ON teleo_mxt per_dir 
LEFT JOIN dir_ppal ON dirp_dir cod_dirppal 
LEFT JOIN conjunto ON conj_dir cod_conj 
LEFT JOIN conjxsubz ON conjunto_cxs cod_conj 
LEFT JOIN barrio ON bar_dir cod_barr 
LEFT JOIN barxsubz ON barrio_bxs cod_barr 
LEFT JOIN subzonas ON subzona_bxs cod_subz 
LEFT JOIN ciudad ON ciud_bar cod_ciud 
LEFT JOIN topxcoord ON teleo_mxt tele_txc 
LEFT JOIN campana ON cam_txc cod_camp 
LEFT JOIN ruta ON r_nro zon_subz 
WHERE activacion =  '1'
AND cod_subz =  '3'
AND mallaxtele.teleo_mxt NOT 
IN 
(

SELECT kt_pasajero
FROM kdxtransporte
WHERE kt_nplanilla 
=  '2'
)
ORDER BY malla_mxt 
Código HTML:
Error en la consulta de conteo de registros: SELECT COUNT(*) FROM kdxtransporte where kt_nplanilla='2') ORDER BY malla_mxt. Mysql dijo: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY malla_mxt' at line 1
El Phpmyadmin sigue funcionando y en la web no funciona.
  #4 (permalink)  
Antiguo 21/12/2010, 09:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con not in

Técnicamente, la consulta en cuestión no tiene ningún error de sintaxis:
Código MySQL:
Ver original
  1.     desc_Camp,
  2.     ced_per,
  3.     hora_mxt,
  4.     hminutos_mxt,
  5.     ampm_mxt,
  6.     nom_per,
  7.     apell_per,
  8.     desc_dirppal,
  9.     nrodp_dir,
  10.     dirs_dir,
  11.     nro_dir,
  12.     IF(piso_dir =  'NA', '', piso_dir ) Piso,
  13.     IF(npiso_dir = 0, '', npiso_dir ) NPISO,
  14.     IF(torre_dir = 'NA', '', torre_dir ) TORRE,
  15.     IF(ntorre_dir = 'NA', '', ntorre_dir ) NTORRE,
  16.     desc_conj,
  17.     desc_bar,
  18.     cel_per,
  19.     tel_per,
  20.     desc_ciud,
  21.     cod_subz,
  22.     desde_mxt,
  23.     hasta_mxt,
  24.     malla_mxt
  25. FROM persona
  26.     LEFT JOIN mallaxcoord ON ( ced_per = mxc_tel )
  27.     LEFT JOIN mallaxtele ON ( mxc_tel = teleo_mxt )
  28.     LEFT JOIN dirxper ON ( teleo_mxt = per_dir )
  29.     LEFT JOIN dir_ppal ON ( dirp_dir = cod_dirppal )
  30.     LEFT JOIN conjunto ON ( conj_dir = cod_conj )
  31.     LEFT JOIN conjxsubz ON ( conjunto_cxs = cod_conj )
  32.     LEFT JOIN barrio ON ( bar_dir = cod_barr )
  33.     LEFT JOIN barxsubz ON ( barrio_bxs = cod_barr )
  34.     LEFT JOIN subzonas ON ( subzona_bxs = cod_subz )
  35.     LEFT JOIN ciudad ON ( ciud_bar = cod_ciud )
  36.     LEFT JOIN topxcoord ON ( teleo_mxt = tele_txc )
  37.     LEFT JOIN campana ON ( cam_txc = cod_camp )
  38.     LEFT JOIN ruta ON ( r_nro = zon_subz )
  39.     activacion =  '1' AND
  40.     cod_subz =  '3' AND
  41.     mallaxtele.teleo_mxt NOT IN (SELECT kt_pasajero FROM kdxtransporte WHERE kt_nplanilla =  '2')
  42. ORDER BY malla_mxt;
La revisé con algunas aplicaciones que parsean la sintaxis y no hay errores en su construcción. SI hay algún error, no está en este ejemplo.
Por lo demás, dices que
Cita:
El Phpmyadmin sigue funcionando y en la web no funciona.
por lo que se infiere que este ejemplo no está tomado de la ejecución de una consulta construida dinámicamente por tu aplicación, sino que la has creado a mano y probado en phpMyAdmin. Si es así, estamos revisando en falso. No es allí donde está el error, sino en el momento que la aplicación crea la sentencia. Ese es el ejemplo que debes capturar y revisar, porque es allí donde el error se está manifestando. Ergo, hay un error de sintaxis, pero se está generando en la aplicación.

Revisa el script.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/12/2010, 10:03
 
Fecha de Ingreso: diciembre-2010
Ubicación: Bucaramanga
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Pregunta Respuesta: Problemas con not in

Gracias gnzsoloyo, lo mismo pienso, el error no es de la consulta, voy a revisar el paginator.inc.php (Versión 1.6.3 ) el cual estoy utilizando y creo que por ahí es el error. Si saben donde puedo encontrar una nueva versión del paginator les agradeceria muchisimo.
  #6 (permalink)  
Antiguo 21/12/2010, 10:48
 
Fecha de Ingreso: diciembre-2010
Ubicación: Bucaramanga
Mensajes: 9
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: Problemas con not in

Muchas gracias gnzsoloyo, tenia razón el problema era de la aplicación, faltaba definir una variable para el paginator.

Problema resuelto.
  #7 (permalink)  
Antiguo 21/12/2010, 10:52
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con not in

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: Ninguno
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:26.