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

Problema con INNER JOIN

Estas en el tema de Problema con INNER JOIN en el foro de Mysql en Foros del Web. Buenas, realmente no se si he de utilizar esa funcion, pero por lo que he visto es lo que creo que debo utilizar pero que ...
  #1 (permalink)  
Antiguo 24/01/2010, 07:40
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Problema con INNER JOIN

Buenas, realmente no se si he de utilizar esa funcion, pero por lo que he visto es lo que creo que debo utilizar pero que no se aplicarla.

Necesitaria hacer una consulta en dos tablas distintas para buscar un numero en concreto. Por $_GET me viene un numero (numero de factura), y quiero que me busque en esas dos tablas si esta ese numero en la columna de numeroFactura.

Hago esta consulta pero no me funciona y querria saber que error hay:

Código MySQL:
Ver original
  1. $sqlContratacion="SELECT nombre FROM cursos.contrataciones INNER JOIN cursos.reservas ON (contrataciones.numeroFactura=".$_GET['numeroFactura']." OR reservas.numeroFactura=".$_GET['numeroFactura'].")";

Un saludo
  #2 (permalink)  
Antiguo 24/01/2010, 08:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Problema con INNER JOIN

pruebala así

Código SQL:
Ver original
  1. SELECT nombre FROM cursos.contrataciones c
  2. INNER JOIN cursos.reservas r
  3. ON c.numerofactura = r.numero factura WHERE
  4. c.numeroFactura=".$_GET['numeroFactura']."
  5. OR r.numeroFactura=".$_GET['numeroFactura'].")";
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 24/01/2010, 10:39
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Problema con INNER JOIN

Creo ver un problema: si en una de las tablas no está el número, no te mostrará el del otro. Debes usar UNION ALL. Algo así, si es que en las dos tablas el campo se llama nombre.

Código SQL:
Ver original
  1. (SELECT c.nombre
  2.   FROM cursos.contrataciones c
  3.   WHERE c.numeroFactura=@variablenumerofactura)
  4. UNION ALL
  5. (SELECT r.nombre
  6.  FROM cursos.reservas r
  7.   WHERE r.numeroFactura=@variablenumerofactura)
  #4 (permalink)  
Antiguo 24/01/2010, 11:18
 
Fecha de Ingreso: agosto-2008
Mensajes: 71
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Problema con INNER JOIN

Gracias a los dos, la respuesta que me sacado el resultado bueno es la que utiliza UNION ALL. De todos modos si me lo puedes explicar por encima me gustaria saber que he hecho realmente, porque c y r no entiendo muy bien su funcion.

gracias
  #5 (permalink)  
Antiguo 24/01/2010, 11:33
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: Problema con INNER JOIN

Otra solucion es usar LEFT JOIN, que si te devuelve valores para un registro aunque no encuentre relacion con la segunda tabla...
  #6 (permalink)  
Antiguo 24/01/2010, 13:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con INNER JOIN

Cita:
Iniciado por futbolregional Ver Mensaje
Gracias a los dos, la respuesta que me sacado el resultado bueno es la que utiliza UNION ALL. De todos modos si me lo puedes explicar por encima me gustaria saber que he hecho realmente, porque c y r no entiendo muy bien su funcion.

gracias
C y R son ALIAS puestos para evitar tener que referirse a la tabla con su nombre completo, por ahorro de código y para evitar cometer errores de tipeo.
Es muy usual utilizar alias en 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)
  #7 (permalink)  
Antiguo 24/01/2010, 13:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 7 meses
Puntos: 300
Respuesta: Problema con INNER JOIN

Vun,
la consulta con LEFT JOIN no valdría para todas las situaciones, porque no sabemos en qué tabla de las dos falta el número de factura (podría faltar en una o en otra) y sólo podríamos usar el nombre de una de ellas antes de LEFT JOIN.

Saludos

Etiquetas: join
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 00:33.