MYSQL:连接两个表,并使用一个表中的随机列


MYSQL: joining two tables and using random column from one

我对mySql相当陌生,似乎无法解决我遇到的问题。我想做的是使用一个表(LessonPlans),并将其与另一个表中的随机图像(Images)连接,但前提是该图像标记的语言与LessonPlan相同。只有在LessonPlans有更多输入的情况下,图像才能继续添加。

详细信息:

我需要显示LessonPlans中的名称级别目标,以及图像的随机图像(名img),但仅当LessonPlans图片都有语言(例如英语)共同时。只要LessonPlans中有行,即使这意味着重复图像,也应继续执行此操作。

我尝试过来自不同来源的各种解决方案,但我要么得到所有随机的,要么得到所有重复的。

ps。我是Stackoverflow的新手,所以如果我没有让自己非常清楚,请原谅

//编辑

这是表格:

LessonPlans Id Subject Language Level Aim

Images Id Name-img Language

/Håkan

试试这个-->

SELECT LessonPlans.Subject , LessonPlans.Level , LessonPlans.Aim , LessonPlans.language ,
       Images.Name_img
FROM   LessonPlans INNER JOIN Images
ON  LessonPlans.language=Images.language
SELECT LessonPlans.Name , LessonPlans.Level , LessonPlans.Aim , LessonPlans.language ,
       Images.img, Images.language 
FROM   LessonPlans , Images
ON  LessonPlans.commonfield=Images.commonfield
WHERE   LessonPlans.language      = 'English';
SELECT * FROM
    (SELECT l.Id, l.Subject, l.Language, i.`Name-img` 
        FROM LessonPlans l, Images i
        WHERE l.Language = i.Language
        ORDER BY RAND()
    ) a
GROUP BY a.Subject
ORDER BY a.Id

您可以使用所需的所有字段。请在SQLFiddle上查看此示例。有时图像名称可能会重复,因为示例模式中的图像很少。

UPD 1:添加特定语言

SELECT * FROM
    (SELECT l.Id, l.Subject, l.Language, i.`Name-img` 
        FROM LessonPlans l
        JOIN Images i
        ON l.Language = i.Language
        WHERE l.Language = 'en'
        ORDER BY RAND()
    ) a
GROUP BY a.Subject
ORDER BY a.Id

在SQLFiddle 上试试这个