[Php-avanzado] Consulta entre dos tablas

Cristian Nimes cjnimes en yahoo.com.ar
Dom Oct 3 17:39:04 ART 2010


Hola gente!
Envié este mensaje el viernes, pero recién veo que no aparece publicado en la 
lista, así que lo mando de nuevo. Me debo haber equivocado al enviarlo, igual 
por las dudas pido disculpas si alguien lo recibe por duplicado!
Entonces, ahí va:

Yo una vez resolví una situación parecida con una consulta que para tus tablas 
sería así:
SELECT news.*, MIN(data.ruta) AS img 
FROM news LEFT JOIN DATA ON news.id = data.id_news AND data.tipo = 'img' 
GROUP BY news.id

Pero para poder usarla es necesario tener en cuenta:
- No se puede incluir el campo data.id en el select, ya que no necesariamente va 
a coincidir con el id del campo ruta obtenido (si quisieras obtener el id, no 
queda otra que usar una subconsulta). Por suerte yo no lo precisaba :)
- En mi caso, el nombre de los archivos era el timestamp del momento en que 
fueron cargados en el sistema (por ejemplo 1285979244.jpg). De esta forma con el 
paso del tiempo, siempre se va a obtener la misma imagen. En el caso de que los 
nombres de archivos fueran alfanuméricos, si por ejemplo hoy tenés casa.jpg y 
mañana para la misma publicación se agrega auto.jpg, entonces va a cambiar la 
foto mostrada.

Y la variante con subconsulta podría ser algo así, mostrando la foto con el 
menor id:

SELECT news.id, news.tit, data.id, data.ruta
FROM news 
LEFT JOIN DATA
ON data.id_news = news.id
AND data.id = (SELECT MIN(id) FROM DATA WHERE id_news = news.id AND data.tipo = 
'img') 
ORDER BY news.fecha DESC, news.id DESC

Espero que alguna te sirva. Saludos!
Cristian.

PD: me parece un poco exagerado usar un campo TEXT para guardar el nombre del 
archivo ;)



      
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20101003/e3f67c68/attachment.htm 


Más información sobre la lista de distribución Php-avanzado