Mysql 如何从不同的表中选择以XXXX开头的每一列和最后添加的列?

Mysql 如何从不同的表中选择以XXXX开头的每一列和最后添加的列?,mysql,Mysql,首先,我将从我的三张桌子开始: 象形图 IDPictogram(INT) 象形图(BLOB) 居民 IDResident(内部) 名称(VARCHAR) 照片(斑点) 计划 IDScheme(INT) 常驻(INT)索引->IDResident 活动1(INT)索引->IDPictGram 活动2(INT)索引->IDPictGram 活动3(INT)索引->IDPictGram 活动4(INT)索引->IDPictGram 活动5(INT)索引->IDPictGram 活动6(INT)索引->

首先,我将从我的三张桌子开始:

象形图
  • IDPictogram(INT)
  • 象形图(BLOB)
  • 居民
  • IDResident(内部)
  • 名称(VARCHAR)
  • 照片(斑点)
  • 计划
  • IDScheme(INT)
  • 常驻(INT)索引->IDResident
  • 活动1(INT)索引->IDPictGram
  • 活动2(INT)索引->IDPictGram
  • 活动3(INT)索引->IDPictGram
  • 活动4(INT)索引->IDPictGram
  • 活动5(INT)索引->IDPictGram
  • 活动6(INT)索引->IDPictGram
  • 活动7(INT)索引->IDPictGram
  • 活动的默认值为NULL,因为不是每个居民每天都有7个活动。我有这样一个选择:

    SELECT *
    FROM ActiviteitenSchemaO A,
        Bewoners B,
        Pictogrammen P
    WHERE 
        A.Bewoner = B.IDBewoner
        AND A.Activity1 = P.IDPictogram
        OR A.Activity1 = NULL
        AND A.Activity2 = P.IDPictogram
        OR A.Activity2 = NULL
        AND A.Activity3 = P.IDPictogram
        OR A.Activity3 = NULL
        AND A.Activity4 = P.IDPictogram
        OR A.Activity4 = NULL
        AND A.Activity5 = P.IDPictogram
        OR A.Activity5 = NULL
        AND A.Activity6 = P.IDPictogram
        OR A.Activity6 = NULL
        AND A.Activity7 = P.IDPictogram
        OR A.Activity7 = NULL
    
    我想要的是选择每个活动列,即链接到象形图的列,因为每个象形图代表一个活动,如此类推

    问题1: 在表方案中,所有活动都默认设置为NULL,并由管理员用活动填写,而我的选择不起作用

    问题2:
    管理员可能会为住户添加另一个活动场所,这样他将有8个活动,而不是7个。如何确保以“活动”开头的所有列也将被自动选择?

    更改表结构

    计划应成为:

    Schemes
    ----------------
    IDScheme (INT)
    Resident (INT) INDEX -> IDResident
    Activity (INT) INDEX -> ActivityID
    
    并添加活动

    Activity
    ----------------
    ActivityID
    IDPictogram
    
    这样您的选择就更简单了

    SELECT *
    FROM Bewoners B,
        Pictogrammen P,
        Activity a,
        Schemes s
    WHERE 
        A.Bewoner = B.IDBewoner
        a.activityID = s.activityID
        p.IDPictogram  = a.IDPictogram
    

    我不太喜欢你的桌子结构。。。您是否考虑为您的多对多关系活动创建一个新的表?在这里你可能会有一些想法:好吧,你不能用这种方法解决问题2。按照@EdwinKrause的建议做可能会有所帮助。我想说,创建动态表结构很少是一个好的实践。@EdwinKrause那么我应该创建一个新的表“活动”,然后呢?我将如何链接它?用我以前的方式?比如在IDpicogram和活动之间?@Fox和问题1怎么样?如果我为活动创建另一个多对多表,它会得到解决吗?它将完全改变查询的结构,因此它可能会解决丑陋的WHERE子句的问题,我相信它会遇到优先级问题。为什么在Schemes中使用activity列?我会选择带有IDScheme和IDPictGram列的活动表。。。哦,实际上这可能会丢失位置信息,如果它很重要的话。这可以通过向“活动”表中添加“职位”列来解决。schemes似乎是“活动”和“居民”之间的链接。@Randy很抱歉现在回答,但我很忙。无论如何,谢谢Randy的回答,但这并不意味着这个结构将使每个记录(每个居民)只有一个活动?我的意思是我现在真的不明白。我应该为每个住户每天安排7项活动。我是否会为每个住院医生准备7份记录?你能解释一下吗?谢谢这里有很多活动,不仅仅是7。但每个居民每天会有7项活动,而且它们并不总是一样的。如果我遵循你的结构,我相信每天的活动都是一样的。与表中的活动类似:活动1=象形图24,活动2=象形图31。。。activity7=象形图11,因此我无法指定活动,它们将是静态的。你得到我想要的了吗?还是我弄错了?所以我需要一点解释。非常感谢。