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

[SOLUCIONADO] INNER JOIN no busca letras

Estas en el tema de INNER JOIN no busca letras en el foro de Bases de Datos General en Foros del Web. Hola que tal miren el problema que tengo es que queiro unir dos tablas todo esta bien pero la cosa es que no busca campos ...
  #1 (permalink)  
Antiguo 26/03/2018, 13:44
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Pregunta INNER JOIN no busca letras

Hola que tal miren el problema que tengo es que queiro unir dos tablas todo esta bien pero la cosa es que no busca campos con letras y no se por que si son numeros lo hace bien pero si son letras no lo hace

asi lo hace bien - WHERE polizas_egresos.factura LIKE '1%'

pero a si no - WHERE polizas_egresos.factura LIKE 'B%'

SELECT polizas_egresos.factura, proveedores.nombre, proveedores.rfc, polizas_egresos.total
FROM proveedores
INNER JOIN polizas_egresos ON polizas_egresos.id = proveedores.id
WHERE polizas_egresos.factura LIKE 'B%'
AND polizas_egresos.idempresa = 1
ORDER BY polizas_egresos.id DESC

ya use las otras funciones pero no lo hace bien LEFT y RIGHT pero tampoco me da el resultado

lo que note que si no uso INNER JOIN lo hace bien

SELECT factura, proveedor, fecha, total
FROM polizas_egresos
WHERE factura LIKE '$consultaBusqueda%'
AND idempresa = $idempresa
ORDER BY id DESC

La cosa es por que no me arroja los datos si uso el INNER JOIN
__________________
Ing. Emilio Viguri de NEXCEN Visitamos en lo que podamos ayudarte.
  #2 (permalink)  
Antiguo 26/03/2018, 14:13
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: INNER JOIN no busca letras

Cita:
lo que note que si no uso INNER JOIN lo hace bien
No confundas el INNER JOIN con el WHERE. Estás hablando de cosas diferentes.

El INNER JOIN requiere obligatoriamente que haya registros donde los valores de ON sean EXACTAMENTE IGUALES y sean el mismo dato. De lo contrario NO devolverá registros.
En esencia, estás haciendo un INNER JOIN entre columnas que me parce difícil que estén relacionadas, dado que el nombre "ID" es igual en ambas tablas, pero cada tabla parece referirse a una entidad diferente.
Para el el INNER JOIN funcione o el ID del proveedor está en la póliza, o la póliza en el proveedor. Me parece que lo primero es lo correcto, pero en ese caso ¿es que el campo "polizas_egresos.id" es donde almacenas el ID del proveedor?
Si no es así estás relacionando caballos con manzanas.

El WHERE solamente aplica el filtro de las condiciones que indicas, para lo cual hay que tener en cuenta que el LIKE se aplica a campos de tipo VARCHAR. ¿Es correcto que esa "factura" sea eso?
__________________
¿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 17/12/2019, 14:00
Avatar de emilio_viguri  
Fecha de Ingreso: junio-2011
Ubicación: Mexico
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 3
Información Respuesta: INNER JOIN no busca letras

Asi quedo la consultita ...
Código MySQL:
Ver original
  1. SELECT polizas_egresos.id, polizas_egresos.fecha, polizas_egresos.fechapago, polizas_egresos.factura, polizas_egresos.proveedor, proveedores.nombre, polizas_egresos.subtotal, polizas_egresos.iva, polizas_egresos.total, polizas_egresos.agregado, polizas_egresos.nombrearchivo, polizas_egresos.grupo, polizas_egresos.observaciones
  2. FROM polizas_egresos
  3. INNER JOIN proveedores ON polizas_egresos.proveedor = proveedores.id
  4. WHERE polizas_egresos.factura LIKE '%1%'
  5. AND polizas_egresos.idempresa = '1'
  6. AND fecha BETWEEN '2019-01-01' AND '2019-12-17'
  7. ORDER BY polizas_egresos.factura ASC LIMIT 300

ya mucho despues aprende que pudo quedar resumida indicando un apodo a la tabla por ejemplo
FROM polizas_egresos e
INNER JOIN proveedores p

Re emplazando polizas_egresos por e y proveedores por p queda algo así

SELECT e.id, e.fecha, e.fechapago, p.nombre, etc ... e.grupo,
FROM polizas_egresos e
__________________
Ing. Emilio Viguri de NEXCEN Visitamos en lo que podamos ayudarte.
  #4 (permalink)  
Antiguo 20/12/2019, 18: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, 4 meses
Puntos: 2658
Respuesta: INNER JOIN no busca letras

Cita:
Re emplazando polizas_egresos por e y proveedores por p queda algo así
Eso se denomina ALIAS, y es una forma de simplificar la escritura de las consultas.
__________________
¿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: campos, join, letras, tabla
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 09:17.