Foros del Web » Programando para Internet » PHP »

buscar en dos tablas

Estas en el tema de buscar en dos tablas en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente problema, tengo dos tablas una invitados y la otra usuarios, usuarios tiene un campo que se llama "usu_email", he ...
  #1 (permalink)  
Antiguo 02/04/2014, 16:29
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Pregunta buscar en dos tablas

Hola a todos, tengo el siguiente problema,

tengo dos tablas una invitados y la otra usuarios,

usuarios tiene un campo que se llama "usu_email",

he invitados tiene un campo que se llama "inv_email"

cuando alquien se registra como usuario o invitado tengo que buscar en las dos tablas si existe el mismo email, ya que un usuario no puede ser invitado con el mismo e-mail.

lo hice asi:

Código PHP:
Ver original
  1. SELECT usuarios.usu_email, invitados.inv_email FROM usuarios, invitados, WHERE usu_email,inv_email = '$usu_email','$inv_email

probe asi: tampoco funciona
SELECT * from usuarios,invitados FROM usuarios, invitados, WHERE usuarios.usu_email='fede' and invitados.inv_email='fede'

No me funciona y no se como hacerlo...
se agradece cualquier comentario y ayuda..
gracias de antemanos a todos
saludos
fede

Última edición por fedefrankk; 02/04/2014 a las 16:34 Razón: otro select
  #2 (permalink)  
Antiguo 02/04/2014, 16:42
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 en dos tablas

Para empezar, este no es un problema de PHP sino de tu sentencia SQL. El problema está en que no sabes crear la sentencia. En la primera, las condiciones están mal escritas, además de haber una coma de más antes de la cláusula WHERE. En la segunda empeoró todo pues desde la selección de campos está mal.

Hazlo así:
Código MySQL:
Ver original
  1. SELECT * FROM usuarios a INNER JOIN invitados b
  2. ON a.usu_email = b.inv_email = 'fede'
  3. WHERE a.usu_email = 'fede'

De este modo, seleccionarás los datos del registro cuyo campo usu_email de la tabla usuarios sea igual a fede (o el valor que sea) y que también coincida con el campo inv_email de la tabla invitados.

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
  #3 (permalink)  
Antiguo 02/04/2014, 16:54
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: buscar en dos tablas

A parte de los dicho por Alexis88, creo que está mal planteado el diseño de la base de datos. Debería haber una sola tabla: "usaurios" y un campo que diferiencie si es invitado o usuario. A lo mejor me dirás que tienen diferentes campos, pero eso no es problema, por algo existe la posibilidad de hacer "nullable" a los campos.
  #4 (permalink)  
Antiguo 02/04/2014, 17:17
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 en dos tablas

Corrijo mi respuesta:

Código MySQL:
Ver original
  1. SELECT * FROM usuarios a INNER JOIN invitados b
  2. ON a.usu_email = b.inv_email
  3. WHERE a.usu_email = 'fede'

Se me pasó una igualdad de la condición del INNER JOIN.
__________________
«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
  #5 (permalink)  
Antiguo 02/04/2014, 17:47
Avatar de fedefrankk  
Fecha de Ingreso: agosto-2007
Mensajes: 871
Antigüedad: 16 años, 8 meses
Puntos: 7
Respuesta: buscar en dos tablas

Hola, buenisimo, muchas gracias a todos.!!!
saludos
y gracias super sirvio..

saludo
fede

Etiquetas: select, tabla, tablas, 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 20:47.