好吧,我不知道如何问这个,所以我只是发布查询,看看是否有人可以帮助它成功。 我正在使用Access,如果这有帮助的话。我会发布表格,但我不知道如何,所以如果有人能解释如何做到这一点,我也会发布这些。
SELECT Pokemon.SpeciesID, Pokemon.FormID, SpeciesName,
Type.TypeName AS Type1 WHERE Type.TypeID = SpeciesType.TypeID AND SpeciesType.IsPrimaryType IS true,
Type.TypeName AS Type2 WHERE Type.TypeID = SpeciesType.TypeID AND SpeciesType.IsPrimaryType IS false,
FROM Pokemon, Type, SpeciesType;
我知道这是错的,我需要在FROM之后的WHERE部分,但我无法弄清楚如何使这项工作。
是的,我必须选择两次类型,对我来说,字面上没有办法不必这样做。有一个多对多连接表(不知道这个叫什么),它有TypeID,SpeciesID,以及该行是否是物种的主要类型的指示符。我需要在一个查询中选择那些为真的那些和那些为假的那些。
(这与学校项目有关。)
编辑:由于没有人解释如何发布表格,这里是关系的屏幕截图,篡改以突出显示相关内容。 https://dl.dropboxusercontent.com/u/28505565/bluh/school/relationships.png IsPrimaryType是是/否列。我需要选择Yes作为Type1而No作为Type2。答案 0 :(得分:0)
也许您可以在SELECT语句中使用Switch函数?
SELECT Pokemon.SpeciesID, Pokemon.FormID, SpeciesName,
switch(
SpeciesType.IsPrimaryType IS true, Type.TypeName,
true, ''
) AS Type1,
switch(
SpeciesType.IsPrimaryType IS false, Type.TypeName,
true, ''
) AS Type2
在此处阅读有关Switch功能的更多信息:http://office.microsoft.com/en-sg/access-help/switch-function-HA001228918.aspx
答案 1 :(得分:0)
好的,所以这里去....请注意,因为我不知道你的桌子或领域这是一个非常非常粗略的指南
SELECT
Pokemon.SpeciesID, Pokemon.FormID, SpeciesName, Type1, Type2
FROM
Pokemon
INNER JOIN
pokemon.ID = speciestype.id
INNER JOIN
typetable.id = pokemon.id
您可以注意选择所需的所有表格中的所有字段。
接下来加入第一张桌子给你第二个,他们需要一个关系,在这种情况下我们只会说我只想要匹配的记录,在这个表上ID和其他ID(如果是这样的话,那对你而言)找出哪些领域是链接的)! 再做一次和宾果游戏
接下来你可能需要过滤,所以添加WHERE子句和过滤器,我只想要type = true。
所以你会说,
WHERE yourtable.type = 'true'
注意它的字符串格式,因为我不知道你的字段类型是什么。
更新:您提供的额外信息应该能够推断出所需的信息,我们可以为您查看所有信息。但是因为这是一项任务,我会从这里接受指导,并谷歌并计算其余部分,最好的学习方法就是做!
祝你好运!