2016-04-22 44 views
1

我有两个表,LessonPlans和Images,我想一起使用,但无法使其工作。在LessonPlans中,我将继续添加越来越多的行,但图像将只包含10个图像,稍后将重复。 EI。 LessonPlan1 = image1,LessonPlan2 = image2 ... LessonPLan10 = image10,LessonPlan11 = image1等。为了使它更好,我只想使用与LessonPlans具有相同语言的图像。连接两个表并循环并重复其中一列的列

无论我现在尝试什么方式,我都会得到图像1,重复的次数与我在该字段中的行数相同。我试过的是:

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

有没有什么办法让这项工作?

我用的表是:

LessonPlans

Id | Subject | Language | Level | Aim 

图片

Id | Name-img | Language | Alt-img 
+0

只是一个html示例,它的外观如下所示:http://webbkurs.ei.hv.se/~hani0008/mlslp/main-mz.html –

+0

您在Images表中没有'Language'字段。那么你怎么做加入? –

+0

如何在图像(语言)中应用没有现有字段的连接? –

回答

0

添加列ImageIdLessonPlans表。在插入新数据到LessonPlans时,您还需要根据您喜欢的某种逻辑插入ImageId。 然后,您可以使用此查询:

select * from LessonPlans l, Images i where l.ImageId=i.Id 

它总是喜欢把所有的逻辑和复杂的地方插入新的数据,因此选择查询是最简单的可能安排一切的一部分。这是因为在你的情况下,插入是很少见的,并且选择是在浏览器页面的每一次打开时完成的,所以我们的目标是优化更频繁的操作,以减少频繁操作的速度。

如果您正在解决插入率高,选择率低的问题,那么逻辑就会反过来。

+0

不会l.Language = i.Language与l.ImageID = i.Id一样工作吗?在那里我已经有了一些结合了两张桌子的东西。 –

+0

不可以。根据我的理解,您希望将“一个图像映射到多个教案”,一个图像可以被多个教案使用,但一个教案只使用一个图片。 通过使用语言,您将得到“多个图像到多个教案”的映射。您将在两个表中具有相同语言的所有行上都有笛卡尔积,因此您将从具有相同课程计划行的SQL查询中获取多行。 – BJovke

+0

好的。所以如果我有每种语言10个图像(Id 1-10英语,11-20法国等),我可以以某种方式添加ImageId 1-10(甚至可以随机),当我创建一个英语LessonPlan,它会添加一个图像正确的,以及重复的图像,即使我做了10000个新的LessonPlans? –

相关问题