Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscar valores coincidentes en una sola tabla.

Estas en el tema de Buscar valores coincidentes en una sola tabla. en el foro de PHP en Foros del Web. No doy con la conexión que necesito a ver si me tiran un poco de data que ayude. Tengo una tabla de reclaciones que posée ...
  #1 (permalink)  
Antiguo 02/01/2014, 10:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Buscar valores coincidentes en una sola tabla.

No doy con la conexión que necesito a ver si me tiran un poco de data que ayude.

Tengo una tabla de reclaciones que posée categoria_id, tarjeta_id, cupon_id

Lo que necesito es que cuando la categoria sea por ejemplo 2 y tarjeta_id sea 1 me muestre el cupon_id correspondiente o varios que tengan ese parámetro.

El problema es que quiero tambien que se pueda hacer con mas de una tarjeta_id y categoria_id.

Tengo esto:

Código:
$resultadosSelect = mysql_query('SELECT * FROM relaciones WHERE categoria_id = 3 AND tarjeta_id = 2');
Que obviamente funciona pero yo necesito que asi tambien funcione:

Código:
$resultadosSelect = mysql_query('SELECT * FROM relaciones WHERE categoria_id = "3,1" AND tarjeta_id = "2,4"');
Intente con INNER y demas y nada... no puedo encontrar la forma de que muestre los resultados de cupon_id que quiero.

Lo que si debo agregar que ademas tengo una tabla cupones que estaría relacionada con esta desde cupon_id y quizas hacer todo en un mismo llamado y mostrar directamente los cupones sería buenisimo.

Me podran ayudar? estoy seguro que estoy en esas trabas tontas que no logras ver.
  #2 (permalink)  
Antiguo 02/01/2014, 10:49
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Buscar valores coincidentes en una sola tabla.

Bueno esto no tiene nada que ver con PHP ya que tu problema es de MySql, prueba esto:

Código MySQL:
Ver original
  1. SELECT * FROM relaciones WHERE categoria_id IN (3,1) AND tarjeta_id IN (2,4)

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 02/01/2014, 10:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscar valores coincidentes en una sola tabla.

Prueba así:

Código PHP:
Ver original
  1. $resultadosSelect = mysql_query('SELECT * FROM relaciones WHERE (categoria_id = 3 OR categoria_id = 1) AND (tarjeta_id = 2 OR tarjeta_id = 4)');

Saludos
------------------------------------------------------------------------------------------------------------------
Estaba tratando de recordar lo que indica jonni09lo. Buena.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 02/01/2014, 11:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Buscar valores coincidentes en una sola tabla.

Ahi pruebo eso Jonni... no puedo con join inner relacionar esos ids a la tabla cupones??

Alexis, para separarlo asi debería generar php dentro pero probaré ambas.
  #5 (permalink)  
Antiguo 02/01/2014, 11:13
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Buscar valores coincidentes en una sola tabla.

En la clausula WHERE puedes hacer referencia a campos relacionados con JOIN haz la prueba

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 02/01/2014, 11:26
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscar valores coincidentes en una sola tabla.

Cita:
Iniciado por rakshaka Ver Mensaje
Alexis, para separarlo asi debería generar php dentro pero probaré ambas.
En realidad, no:

Código PHP:
Ver original
  1. $resultadosSelect = mysql_query(sprintf('SELECT * FROM relaciones WHERE (categoria_id = %d OR categoria_id = %d) AND (tarjeta_id = %d OR tarjeta_id = %d)', $valor1, $valor2, $valor3, $valor4));

Aunque me sigue gustando más la forma explicada por jonni09lo.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 02/01/2014, 11:57
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Buscar valores coincidentes en una sola tabla.

Buenisimo el:

Cita:
SELECT * FROM relaciones WHERE categoria_id IN (3,1) AND tarjeta_id IN (2,4)
Ahora, como relaciono el resultado de esto con el de cupones.

Osea, los cupones_id de ambas tablas con JOIN?
  #8 (permalink)  
Antiguo 02/01/2014, 12:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscar valores coincidentes en una sola tabla.

Intenta con esto:

Código MySQL:
Ver original
  1. SELECT * FROM relaciones a INNER JOIN cupones b ON a.cupones_id = b.cupones_id WHERE a.categoria_id IN (3,1) AND a.tarjeta_id IN (2,4)
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 02/01/2014, 12:52
 
Fecha de Ingreso: mayo-2009
Mensajes: 166
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Buscar valores coincidentes en una sola tabla.

Perfecto! Mil gracias!

Etiquetas: mysql, select, 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 16:36.