Comunidad de diseño web y desarrollo en internet online

INNER JOIN limitando solo una de las tablas??

Citar            
MensajeEscrito el 05 Mar 2009 11:55 pm
Hola como están, espero que bien.

Tengo una duda media urgente. como se puede hacer INNER JOIN de dos tablas limitando solo una..

por ejemplo, tengo dos tablas:
GALERIAS:
gal_id - nombre
1 - animales
2 - personas
3 - extraterrestres

IMAGENES
img_id - gal_id - foto
1 - 2 - pers1.jpg
2 - 2 - pers2.jpg
3 - 2 - pers3.jpg
4- 1 - gato.jpg
5- 1 - perro.jp
6- 3 - et1.jpg
7- 3 - et2.jpg

entonses lo que quiero hacer es por cada resultado de galeria traer una sola foto!! me explico?
osea si vemos la galeria PERSONAS esta relacionada con 3 fotos, pero solo quiero traer una .. como hago el limite??

hasta ahora hacia:

Código :

SELECT gal.*,img.foto 
FROM GALERIAS as gal INNER JOIN IMAGENES as img 
WHERE img.gal_id=gal.gal_id;


pero me devuelve algo asi
gal_id - nombre - archivo
1 - animales - gato.jpg
1 - animales - perro.jpg
2 - personas- pers1.jpg
2 - personas- pers2.jpg
2 - personas- pers3.jpg
etc...

y lo que yo quiero que me traiga es un resultado asi:
gal_id - nombre - archivo
1 - animales - img1.jpg
2 - personas - pers1.jpg
3 - extraterrestres - et1.jpt

Osea todas las galerias, pero solo UNA imagen por galeria..

Como se limita solo una tabla??? :(
gracias..

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 06 Mar 2009 02:03 am
El ON se utiliza para las uniones, no el WHERE. Y tu problema se resuelve así:

Código :

SELECT gal.*,img.foto 
FROM GALERIAS as gal INNER JOIN IMAGENES as img 
ON img.gal_id=gal.gal_id
GROUP BY gal.gal_id
;

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 06 Mar 2009 02:11 am
Solo debes agrupar el resultado con un group by al final

Código :

select  gal.gar_id, gal.nombre, img.archivo from GLAERIAS as gal INNER JOIN IMAGENES as img where gal.gal_id=img.gal_id group by gal.gal_id

Por drarock

Claber

705 de clabLevel

3 tutoriales

Genero:Femenino  

Lima, Peru

firefox
Citar            
MensajeEscrito el 06 Mar 2009 02:13 am
Oh ya Dano habia contestado ^^ , no sabia lo del ON :D

Por drarock

Claber

705 de clabLevel

3 tutoriales

Genero:Femenino  

Lima, Peru

firefox
Citar            
MensajeEscrito el 06 Mar 2009 02:14 am
exacto estos compadres si que saben usar el sql bueno el mensaje me sirvio a mi tbn para solventar unas dudillas saludos dano y drarock

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 06 Mar 2009 03:32 pm
Hola, gracias por la respuesta dano y drarock ..

voy a leer un poco mas sobre Group By para entender su funcionamiento..

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 30 Jun 2009 08:41 pm

Dano escribió:

El ON se utiliza para las uniones, no el WHERE. Y tu problema se resuelve así:

Código :

SELECT gal.*,img.foto 
FROM GALERIAS as gal INNER JOIN IMAGENES as img 
ON img.gal_id=gal.gal_id
GROUP BY gal.gal_id
;



Hola, alguien sabe como sumarle un WHERE a esta sentencia? osea que devuelva los resultados cuando por ejemplo
GALERIAS year=2002 .. un ejemplo.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 30 Jun 2009 09:58 pm

phoxer escribió:

Dano escribió:

El ON se utiliza para las uniones, no el WHERE. Y tu problema se resuelve así:

Código :

SELECT gal.*,img.foto 
FROM GALERIAS as gal INNER JOIN IMAGENES as img 
ON img.gal_id=gal.gal_id
GROUP BY gal.gal_id
;



Hola, alguien sabe como sumarle un WHERE a esta sentencia? osea que devuelva los resultados cuando por ejemplo
GALERIAS year=2002 .. un ejemplo.



Código MySQL :

SELECT 
    gal.*, 
    img.foto 
FROM GALERIAS as gal 
INNER JOIN IMAGENES as img 
ON img.gal_id=gal.gal_id
WHERE gal.year = 2002
GROUP BY gal.gal_id;



saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 30 Jun 2009 10:48 pm
Gracias Maikel, voy a probarlo. yo lo hice asi, pero tiene una falla porque me trae todas las imagenes en ves de una sola.

Código PHP :

 SELECT gal. * , img.imagen
FROM galerias AS gal
LEFT JOIN imagenes AS img ON ( img.gal_id = gal.gal_id)
WHERE gal.year = '2004'


voy a probar tu codigo a ver que onda. muchas gracias :)

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 01 Jul 2009 10:58 pm
Eh bueno yo solo puse el WHERE, ni idea de que consulta quieres hacer... si me parecia extraño ese group by pero bueno lo tenias...

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.