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

Problema con campos iguales inner join

Estas en el tema de Problema con campos iguales inner join en el foro de Mysql en Foros del Web. Tengo estas dos tablas y este codigo Código: SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.nombre=tabla2.nombre WHERE tabla1.nombre='Pirata' Pero al momento de imprimir echo ...
  #1 (permalink)  
Antiguo 18/01/2012, 01:20
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 5 meses
Puntos: 3
Problema con campos iguales inner join

Tengo estas dos tablas y este codigo
Código:
SELECT * FROM tabla1 INNER JOIN tabla2 ON tabla1.nombre=tabla2.nombre WHERE tabla1.nombre='Pirata'
Pero al momento de imprimir

echo $row[id];

me imprime 2 y 4 en lugar de 1 y 3, y es lo que no entiendo porque si primero declaro la tabla1 porque no deberia imprimirme por defecto los campos de esta tabla aun que en la otra existan campos igual? O como le indico que imprima solo los campos de la tabla1 aunque existan otros con el mismo nombre? Espero puedan hecharme una mano. Saludos y gracias.
  #2 (permalink)  
Antiguo 18/01/2012, 04:09
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 3 meses
Puntos: 331
Respuesta: Problema con campos iguales inner join

Código MySQL:
Ver original
  1. SELECT Uno.id, Uno.nombre
  2. FROM tabla1 Uno
  3.   INNER JOIN tabla2 Dos
  4.     ON Uno.nombre = Dos.nombre

Funciona ok, comprueba el tipo de datos en los campos y los valores. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 18/01/2012, 13:05
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Problema con campos iguales inner join

Cita:
Iniciado por repara2 Ver Mensaje
Código MySQL:
Ver original
  1. SELECT Uno.id, Uno.nombre
  2. FROM tabla1 Uno
  3.   INNER JOIN tabla2 Dos
  4.     ON Uno.nombre = Dos.nombre

Funciona ok, comprueba el tipo de datos en los campos y los valores. Saludos
Gracias por responder, bueno este ejemplo solo era para entender porque era corto, pero en mi caso no creo usar esta solucion porque son mas de 20 columnas de la tabla1 mas otras 15 de la tabla2, entonces no puedo poner esto:

SELECT Uno.id, Uno.nombre, Uno.otrodato, Uno.otrodato..... hasta los 20 FROM tabla1

Exite otra forma? Eh estado viendo que igual se usan left y right join pero aun no entiendo bien que es lo que hacen.
  #4 (permalink)  
Antiguo 18/01/2012, 13:16
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 campos iguales inner join

Cita:
Gracias por responder, bueno este ejemplo solo era para entender porque era corto, pero en mi caso no creo usar esta solucion porque son mas de 20 columnas de la tabla1 mas otras 15 de la tabla2, entonces no puedo poner esto:

SELECT Uno.id, Uno.nombre, Uno.otrodato, Uno.otrodato..... hasta los 20 FROM tabla1
¿Por qué no?
Eso es lo que hacemos todos cuando nos vemos obligados a causa de los requerimientos del sistema...
Yo tengo INNER JOIN que tienen más de 50 campos indicados así, por diferentes necesidades.
La pereza está fuera de lugar en este rubro.

Cita:
Eh estado viendo que igual se usan left y right join pero aun no entiendo bien que es lo que hacen.
Eso requiere leer el manual y apuntes dedicados al tema.

Empieza por Wikipedia.
__________________
¿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 18/01/2012, 14:14
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Problema con campos iguales inner join

Gracias por responder, no es cosa de pereza sino de no hacer tanto codigo, bueno y es posible hacer esto?

Código:
SELECT tabla2.campo (traer todo tabla 1)
Se que con un * trae todos los campos pero pues no funciona si lo pongo existe algun comando o sentendia para que le indique que solo em traiga un dato de la tabla2 y todos los de la tabla 1 sin escribir los nombres? De nuevo gracias por responder.
  #6 (permalink)  
Antiguo 18/01/2012, 14:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 11 meses
Puntos: 447
Respuesta: Problema con campos iguales inner join

Hola cyber_dark:

No por escribir más o menos código la consulta es más óptima... de hecho listar los campos que necesitas (aun cuando sean 50 o más como lo menciona el compañero gnzsoloyo) siempre será más óptimo que utilizar *.

Si tuvieras necesidad de utilizar la totalidad de los campos de una tabla en específico puedes poner algo como esto:

Código:
Select T1.*, T2.campo1, T2.Campo2
.......
Es decir, la consulta traería todos los campos de la tabla 1 más los campos 1 y 2 de la tabla 2.

Saludos
Leo.
  #7 (permalink)  
Antiguo 18/01/2012, 14:37
 
Fecha de Ingreso: julio-2010
Mensajes: 158
Antigüedad: 14 años, 5 meses
Puntos: 3
Respuesta: Problema con campos iguales inner join

si de hecho eso hice tabla1.* y si, si necesito todos los campos, gracias por responder y por la ayuda.

Etiquetas: campos, iguales, join, sql, 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 05:25.