2015-03-19 2 views
0

У меня есть две таблицыMYSQL отчетливый случайных запросов присоединиться к

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) 

у меня есть три но на самом деле я могу получить только отдельные альбомы с фотографиями, но без случайных значений.

EDIT: Я использовал следующий запрос, который возвращает мне 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

Я немного угадывание здесь, и я не уверен, что производительность на этом, но вы можете использовать что-то вроде:

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 

(я удалил отчетливые, где и группа по из вашего запроса, поскольку эти заявления кажутся избыточными) синтаксис

+0

ошибка: у вас есть ошибка в вашем SQL синтаксиса; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'DISTINCT fk_album FROM fotos ORDER BY RAND()) как f ON a.id = f.fk_ – dac777

+0

Я удалил отдельную добавленную группу ... надеюсь что теперь будет лучше ... – Fox

+0

Спасибо, Фокс! Это работает для меня. Извините, я не могу повышать, потому что у меня все еще недостаточно очков репутации – dac777

Смежные вопросы