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)索引->
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,因此我无法指定活动,它们将是静态的。你得到我想要的了吗?还是我弄错了?所以我需要一点解释。非常感谢。