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

[SOLUCIONADO] Mas de una sentencia con where

Estas en el tema de Mas de una sentencia con where en el foro de Mysql en Foros del Web. Tengo este codigo, funciona completo hasta el primer where, la pregunta es si puedo colocar 3 tipos de campos que busco (banco1, banco2, banco3) y ...
  #1 (permalink)  
Antiguo 11/02/2014, 08:14
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Mas de una sentencia con where

Tengo este codigo, funciona completo hasta el primer where, la pregunta es si puedo colocar 3 tipos de campos que busco (banco1, banco2, banco3) y si se puede si esta bien este o que le falta por que no me lo lanza, o si tienen algun ejemplo Saludos

Código MySQL:
Ver original
  1. R.`usuarios`
  2. P.`rut`,
  3. R.`nombreusuario`,
  4. P.`nom_fantasia`
  5.  
  6. `PVIGENTE` P LEFT JOIN `RESULTADOS` R ON P.`COD_USER_BBVA` =R.`USUARIOS`
  7.  R.`USUARIOS` IS NULL
  8. AND NOM_FANTASIA ='BANCO 1',
  9. AND NOM_FANTASIA='BANCO 2',
  10. AND NOM_FANTASIA='BANCO3',
  #2 (permalink)  
Antiguo 11/02/2014, 08:55
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

Cita:
Iniciado por JorgeQuirino Ver Mensaje
Tengo este codigo, funciona completo hasta el primer where, la pregunta es si puedo colocar 3 tipos de campos que busco (banco1, banco2, banco3) y si se puede si esta bien este o que le falta por que no me lo lanza, o si tienen algun ejemplo Saludos

Código MySQL:
Ver original
  1. R.`usuarios`
  2. P.`rut`,
  3. R.`nombreusuario`,
  4. P.`nom_fantasia`
  5.  
  6. `PVIGENTE` P LEFT JOIN `RESULTADOS` R ON P.`COD_USER_BBVA` =R.`USUARIOS`
  7.  R.`USUARIOS` IS NULL
  8. AND NOM_FANTASIA ='BANCO 1',
  9. AND NOM_FANTASIA='BANCO 2',
  10. AND NOM_FANTASIA='BANCO3',
El problema es de lógica. El campo no puede tener al mismo tiempo tres valores diferentes, por lo que no puede cumplirse al mismo tiempo:
Cita:
AND NOM_FANTASIA ='BANCO 1',
AND NOM_FANTASIA='BANCO 2',
AND NOM_FANTASIA='BANCO3',
Lo que corresponde es uno de entre tres, lo cual implcia usar OR, pero como tienes un valor base de otro campo, las tres validaciones deben estar encerradas entre paréntesis para tomarse como una sola:
Código MySQL:
Ver original
  1.     R.`usuarios`,
  2.     P.`rut`,
  3.     R.`nombreusuario`,
  4.     P.`nom_fantasia`
  5.     `PVIGENTE` P LEFT JOIN `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  6.     R.`USUARIOS` IS NULL
  7.     AND (NOM_FANTASIA ='BANCO 1' OR NOM_FANTASIA='BANCO 2' OR NOM_FANTASIA='BANCO3')
o bien:
Código MySQL:
Ver original
  1.     R.`usuarios`,
  2.     P.`rut`,
  3.     R.`nombreusuario`,
  4.     P.`nom_fantasia`
  5.     `PVIGENTE` P LEFT JOIN `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  6.     R.`USUARIOS` IS NULL
  7.     AND NOM_FANTASIA IN ('BANCO 1' , 'BANCO 2', 'BANCO3')

Además de eso tienes dos erroes graves:
1) El primer campo no está separado del segundo por su correspondiente coma.
2) Estás separando las condiciones del WHERE con comas, y eso esta mal. No existen comas entre condiciones.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 11/02/2014, 13:31
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Problema con campos que no me los muestra

tengo problemas con los datos que estoy llamando, estoy trabajando con 2 tablas una resultados y otra pvigente, y solo me trae 2 campos y 2 me los muestra vacios este es mi codigo. me funciona todo correcto lo demas. Saludos

Código MySQL:
Ver original
  1. SELECT R.`usuarios` , P.`rut` , R.`nombreusuario` , P.`nom_fantasia`
  2. FROM  `PVIGENTE` P
  3. LEFT JOIN  `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  4. WHERE R.`USUARIOS` IS NULL
  5. AND (
  6. NOM_FANTASIA =  'bbva comercializadora chile'
  7. OR NOM_FANTASIA =  'banco bbva'
  8. OR NOM_FANTASIA =  'bbva servicios corporativos'
  9. )
  #4 (permalink)  
Antiguo 11/02/2014, 13:55
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

No abras temas nuevos, si estás con el mismo problema o es una continuación.
En estos casos serán combinados sin previo aviso.

Yendo al tema del último post, pruba primero qué es lo que devuelve esto:
Código MySQL:
Ver original
  1. SELECT R.`usuarios` , P.`rut` , R.`nombreusuario` , P.`nom_fantasia`
  2. FROM  `PVIGENTE` P
  3. LEFT JOIN  `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  4. WHERE R.`USUARIOS` IS NULL;
Si devuelve datos en la columna de nombre de fantasía, postea la lista aqui para ver lo que realmente está pasando.
__________________
¿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 11/02/2014, 14:16
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

me trae dos columnas, las otras me las devuelve vacias con un null.
cuando ago un
Código MySQL:
Ver original
  1. select resultados.usuarios, pvigente.rut, resultados.nombreusuario, pvigente.nom_fantacia
  2. from resultados, pvigente
  3. resultados.usuarios = pvigente.cod_user_bbva

me los muestra bien, solo que yo necesito los datos que no se encuentran en una tabla, no traerlos todos
  #6 (permalink)  
Antiguo 11/02/2014, 14:33
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

Postea el reswultado que estás viendo. La descripcion no alcanza para ver lo que quiero ver.
Por otro lado, la query que muestras ahora es irrelevante, porque esa es un INNER JOIN implícito, y no cumple con el caso. Quiero ver el LEF JOIN en ese contexto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 11/02/2014, 14:43
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

esto me sale con la consulta simple
usuarios rut nombreusuario nomFantasia
H000015 123456 juan banco
H000636 345664 jorge banco

y con la primera consulta me sale asi


usuarios rut nombreusuario nom_fantasia
NULL 12345358 NULL Banco
NULL 65498741 NULL Banco
  #8 (permalink)  
Antiguo 11/02/2014, 14:55
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

Pues por lo que estás diciendo, los valores "bbva comercializadora chile", "banco bbva" y "bbva servicios corporativos" no existen en la tabla "PVIGENTE", por lo que la query que muestras en el post #3 nunca devolvería datos.
Si lo que quieres es buscar un valor por similitud, las consulta es incorrecta.
¿Estás seguro de que hay algún registro que cumpla con esa condición?

Código MySQL:
Ver original
  1. SELECT R.`usuarios` , P.`rut` , R.`nombreusuario` , P.`nom_fantasia`
  2. FROM  `PVIGENTE` P
  3.     LEFT JOIN  `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  4. WHERE R.`USUARIOS` IS NULL
  5.     # Esta condicion es obligatoria. AL menos uno de esos nombres debe existir en un registro.
  6.     AND NOM_FANTASIA IN('bbva comercializadora chile', 'banco bbva', 'bbva servicios corporativos')
Nota: Esta sintaxis es equivalente a la tuya. Solamente es más simple.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 11/02/2014, 15:06
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

si me muestra los datos, de los 3 tipos de datos que busco, son como 1000 registros y me muestra los 40 aprox que contienen o banco o comercializadora o servicios, pero ese no es tanto mi conflicto sino que el usuario y el nombreusuario no me los muestra
  #10 (permalink)  
Antiguo 11/02/2014, 17:08
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

Cita:
el usuario y el nombreusuario no me los muestra


Bueno, bueno, bueno...
La verdad me has dejado algo sorprendido, porque según lo que dices parece que estás usando una cláusula en el FROM sin tener ni la mas mínima idea de para qué sirve.
¿Sabes cuál es la función del LEFT JOIN?
Devuelve todo lo que está en la tabla a la izquierda (la primera), tenga o no relación con lo que está en la tabla derecha (la segunda). Y cuando a esto le adicionas como condición un IS NULL sobre un campo de la segunda tabla el resultado es que devuelva sólo aquellos casos en que no hay registros relacionados entre ambas.
En consecuencia, tu consulta está devolviendo exactamente lo que debe: Los registros de la tabla PVIGENTE pertenecientes a los nombres de fantasía "bbva comercializadora chile", "banco bbva", "bbva servicios corporativos", que no estén relacionados con ningún usuario que aparezca en la tabla RESULTADOS.
En otras palabras, jamás te aparecerán esos datos, porque son nulos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 12/02/2014, 07:26
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Como seleccionar datos que estan en una tabla y no en otra

necesito tomar los datos que estan en una tabla pero no en otra, ademas de que sean de sierto nombre ej banco1, eso funciona bien, solo me falta hacer que me traiga solo los datos que estan en una y no en la otra
tablas resultados y pvigente. que traiga los datos que es estan en pvigente y no en resultados, este es mi codigo Saludos

Código MySQL:
Ver original
  1. SELECT resultados.usuarios, pvigente.rut, resultados.nombreusuario, resultados.grupo, pvigente.nom_fantasia
  2. FROM resultados, pvigente
  3. WHERE usuarios=cod_user_bbva not in(select pvigente.cod_user_bbva from pvigente)
  4.  
  5. AND (
  6. pvigente.NOM_FANTASIA =  'banco1'
  7. OR pvigente.NOM_FANTASIA =  'banco2'
  8. OR pvigente.NOM_FANTASIA =  'banco3'
  9. )

tengo 6 tipos de banco. en caso de
  #12 (permalink)  
Antiguo 12/02/2014, 07:52
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 4 meses
Puntos: 574
Respuesta: Como seleccionar datos que estan en una tabla y no en otra

Ya te lo han dicho

Código MySQL:
Ver original
  1. ....
  2. FROM  `PVIGENTE` P
  3.       JOIN  `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  4. ....

Esto daria TODOS los registros que esten en las dos tablas

Código MySQL:
Ver original
  1. ....
  2. FROM  `PVIGENTE` P
  3.     LEFT JOIN  `RESULTADOS` R ON P.`COD_USER_BBVA` = R.`USUARIOS`
  4. ....

Si agregas LEFT dará TODOS los registros de `PVIGENTE` esten o no en resultados.

si le agregas

Código MySQL:
Ver original
  1. WHERE R.`USUARIOS` IS NULL

solo darà los que NO esten en Resultados
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 12/02/2014 a las 08:10
  #13 (permalink)  
Antiguo 12/02/2014, 08:01
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

lo mismo tengo en otra consulta y me funciona, pero necesito traer solo algunos columnas y que coincidan con un sierto criterio como lo es banco1,banco2 etc
  #14 (permalink)  
Antiguo 12/02/2014, 08:01
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

No abras nuevos temas si estás resolviendo el mismo problema. Está expresamente prohibido en las Políticas de Uso de FDW.
Estás trabajando exactamente con el mismo caso, y ni siquiera me has respondido a lo que te dije.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #15 (permalink)  
Antiguo 12/02/2014, 08:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 4 meses
Puntos: 574
Respuesta: Mas de una sentencia con where

Y ademas provocas que los que intentamos ayudarte no sepamos que estamos contestando... o si hemos soñado un post que no tenia otras respuestas...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #16 (permalink)  
Antiguo 12/02/2014, 08:21
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

gracias, soy casi nuevo y no sabia que subir el mismo codigo mas de una ves lo adjuntaba a un post antiguo Saludos
  #17 (permalink)  
Antiguo 12/02/2014, 08:36
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

No exactamente.
La combinación de posts es una tarea que hacemos los moderadores cuando vemos este tipo de situaciones, pero no es una tarea que deberíamos tener que hacer. Por eso se pide que no se abran multip`les posts sobre un mismo asunto o problema.
Y como bien te remarca jurena, cuando haces eso los que te contestan pueden no darse cuenta que están respondiendo a un tema que ya se contestó en otro post....
Por limpieza y coherencia de los foros, los temas duplicados se borran, y los que continúan temas ya abiertos se combinan.

Por lo demás, ¿te quedaron claras las opciones que tienes desde el SQL para tu problema?

- Si quieres los bancos que no están relacionados a los usuarios, se puede, pero no obtendrás los usuarios.
- Si quieres los usuarios que no están relacionados con ciertos bancos, también, pero no tendrás los bancos que no se relacionan.
- Para lograr ambas cosas, es decir la lista de usuarios y los bancos que no se relacionan con ellos, la cosa es algo más complicada, pero no imposible.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #18 (permalink)  
Antiguo 12/02/2014, 09:01
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

lo que necesitaba ya me funciona, el problema que sigo teniendo es que como trabajo con 2 tablas, los registro correspondiente a una de ellas no me los muestra. siendo que estoy comparando las claves primarias para que coincidan con el registro
  #19 (permalink)  
Antiguo 12/02/2014, 09:06
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

Necesitaríamos ver la sentencia exacta que estás usando, la definición de las tablas y además datos de muestra reales.
Las descripciones genericas o ejemplos tipeados a mano no sirven para estos casos.
Es posible que haya algo que no genere un matching correcto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #20 (permalink)  
Antiguo 12/02/2014, 09:10
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

Código MySQL:
Ver original
  1. SELECT r.usuarios, p.rut, r.nombreusuario, r.grupo, p.nom_fantasia
  2. FROM pvigente P
  3. LEFT JOIN resultados R ON p.cod_user_bbva = r.usuarios
  4. WHERE r.usuarios IS NULL
  5. AND (
  6. p.NOM_FANTASIA =  'banco1'
  7. OR p.NOM_FANTASIA =  'banco2'
  8. OR p.NOM_FANTASIA =  'banco3'
  9. )

y estos son los datos que me muestra
Código HTML:
Ver original
  1. usuarios    rut nombreusuario   grupo   nom_fantasia
  2. NULL    12345      NULL NULL    Banco 1
  3. NULL    11235   NULL    NULL    Banco 1
  4. NULL    12525   NULL    NULL    Banco 2
  5. NULL    12555   NULL    NULL    Banco 3
  #21 (permalink)  
Antiguo 12/02/2014, 09:35
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, 7 meses
Puntos: 2658
Respuesta: Mas de una sentencia con where

OK, es mas o menos lo mismo que ya mencionabas antes.
¿Cómo serían, según tu, los datos que eso debería mostrar?

Porque como ya te dije antes, lo que te muestra es correcto para la query que usas, no te va a mostrar lo susuarios porque estás pidiendo que te muestre los bancos sin usuarios en la tabla RESULTADOS. Por consecuencia no puee recuperar nombres de usuarios de ninguna clase.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #22 (permalink)  
Antiguo 12/02/2014, 09:47
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

Código HTML:
Ver original
  1. usuarios    rut         nombreusuario   grupo   nom_fantasia
  2. H0123       12345    juan                    a1        Banco 1
  3. H0124       11235    jorge                  a2         Banco 1
  4. H1234       12525    camilo                 a3        Banco 2
  5. H6547       12555    esteban              a4        Banco 3

algo asi mas menos deberia mostrarme
  #23 (permalink)  
Antiguo 12/02/2014, 09:48
 
Fecha de Ingreso: enero-2014
Mensajes: 111
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Mas de una sentencia con where

si ago la consulta si el left join me muestra todos los datos de todos los campos, pero el problema de esto es que necesito los datos que no esten dentro de la otra tabla

Etiquetas: campo, campos, join, muestra, null, select, sentencia, tabla, usuarios
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 08:07.