2014-04-14 140 views
0

Helo everyone。在第二個表格中隨機選擇3條記錄

我是一名MySQL初學者,所以我需要一些幫助。 目前,我的請求返回了系列(ID,名稱,說明)的信息和該請求的系列備註的平均值。

SELECT s.* , round(coalesce(avg(note.note) , 0) , 1) AS average 
FROM serie AS s 
LEFT JOIN note ON s.id_serie = note.id_serie 
GROUP BY s.id_serie 
ORDER BY average DESC 

,我有這種反應

id_serie name annee description  average 
1   DBZ  1984 test   3.5 
2   Bleach 2001 description2 2.0 

我還有一個表中的內容意甲的風格。該表只有id_genre和id_serie。

我現在想要的是一個查詢所有數據的請求,我已經擁有一個系列的+ max 3 id_genre。

id_serie name annee description  average genre1 genre2 genre3 
1   DBZ  1984 test   3.5  1  2   9 
2   Bleach 2001 description2 2.0  1  NULL  NULL 

如果可能的話,我想也該類型是隨機選擇,如果意甲有3個以上流派(永不選擇2次同類型的系列)

回答

0

這是一種方法。但是,不是生成三列,而是將結果放在單列中,並將值連接起來:

SELECT s.* , round(coalesce(avg(n.note) , 0) , 1) AS average, g.genres 
FROM serie s LEFT JOIN 
    note n 
    ON s.id_serie = n.id_serie LEFT JOIN 
    (select substring_index(group_concat(distinct g.genre order by random()), ',', 3) as genres 
     from genre g 
     group by g.id_serie 
    ) g 
    on g.id_serie = s.id_serie 
GROUP BY s.id_serie 
ORDER BY average DESC