我对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 上试试这个