【问题标题】:MYSQL: joining two tables and using random column from oneMYSQL:连接两个表并使用一个随机列
【发布时间】:2016-04-20 08:05:29
【问题描述】:

我对 mySql 比较陌生,我似乎无法解决我遇到的问题。我想要做的是使用一个表(LessonPlans)并将它与另一个表(图像)中的随机图像连接起来,但前提是该图像使用与课程计划相同的语言进行标记。只要有来自课程计划的更多输入,图像就应该继续添加。

详细说明:

我需要显示 LessonPlans 中的 NameLevelAim> 以及随机图像(Name-img) 来自 Images,但仅当 LessonPlansImages 都具有 Language (例如英语)共同点。只要 LessonPlans 中有行,就应该继续这样做,即使这意味着重复 Images

我尝试了各种来自不同来源的解决方案,但我要么随机获取所有内容,要么重复所有内容。

ps。我是 Stackoverflow 的新手,如果我没有把自己说得很清楚,请原谅

//编辑

这是表格:

LessonPlans Id Subject Language Level Aim

Images Id Name-img Language

/哈坎

【问题讨论】:

  • 请张贴表格的架构。如果可能的话,还有一个样本 o/p。
  • 好的。我尝试编辑帖子。这有意义吗?
  • @Håkan:其实我对你的问题不清楚,你能帮我理解吗?
  • Pawan Kumar Sharma:我想要做的是:遍历LessonPlans 中的所有行,并且对于每一行我想从Images 添加一个随机图像,只要 Language` 是一样。

标签: php mysql


【解决方案1】:

试试这个 -->>

SELECT LessonPlans.Subject , LessonPlans.Level , LessonPlans.Aim , LessonPlans.language ,
       Images.Name_img
FROM   LessonPlans INNER JOIN Images
ON  LessonPlans.language=Images.language

【讨论】:

  • 我也做不到。它只是无法询问查询。我现在完全迷路了......
  • 我让图像出来了,但是发生的情况是它重复每个图像的次数与语言匹配的次数一样多。我只想获得与课程计划中一样多的行,以及每行的随机图像。在这种情况下,我有 8 个带英语的课程计划,这给了我连续第一张图片的 8 个,然后是第二张图片中的 8 个,依此类推...
【解决方案2】:
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';

【讨论】:

    【解决方案3】:
    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试试这个

    【讨论】:

    • 谢谢!那行得通!有没有办法只选择一种语言。他们现在都正确排列,但如果我只想要英语?
    • 太棒了!完美运行!你是明星@pythagor! :)
    • 添加你的头痛。如果我出于某种原因不再希望它是随机的?仅删除 ORDER BT RAND() 不起作用,并且 ORDER BY 其他任何东西只会重复第一张图像。我该怎么做?
    猜你喜欢
    • 1970-01-01
    • 2021-10-09
    • 1970-01-01
    • 2011-04-21
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    相关资源
    最近更新 更多