[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