我有两张桌子
albums fotos
------ -----
id id
titulo url
fk_album
我想知道如何从所有非空的相册中随机选择照片......并且必须是不同的...例如:
albums fotos
------ ------
1 A 1 my_url_1 2
2 B 2 my_url_2 2
3 C 3 my_url_3 1
4 D 4 my_url_4 2
5 E 5 my_url_5 3
6 my_url_6 3
我想要这些结果:(分明,随机和加入)
result0 ->
albums.id -> 2
albums.titulo -> B
fotos.url -> my_url_2 (this must be random) (or my_url_1 or my_url_4)
result1 ->
albums.id -> 3
albums.titulo -> C
fotos.url -> my_url_6 (this must be random) (or my_url_5 )
result2 ->
albums.id -> 1
albums.titulo -> A
fotos.url -> my_url_3 (the album only has this foto url)
我尝试了很多东西,但实际上我只能用照片获得不同的专辑,但没有随机值。
编辑: 我正在使用以下查询,它返回带有照片的5张专辑(所有不同...不重复)。但每张专辑我总是得到相同的照片。我每次都需要不同的照片(如果专辑当然有多张照片)
select distinct
a.id,
a.titulo,
f.url
from albums as a
inner join
fotos as f
on a.id = f.fk_album
where f.fk_album = a.id
GROUP by f.fk_album, a.id
答案 0 :(得分:0)
我在这里有点猜测,我不确定这是什么表现,但你可以使用类似的东西:
SELECT a.id,
a.titulo,
f.url
FROM albums AS a
JOIN (SELECT url, fk_album FROM fotos ORDER BY RAND()) as f
ON a.id = f.fk_album
GROUP BY a.id
(我从您的查询中删除了distinct,where和group by,因为这些语句似乎是多余的)