Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 我的联接操作中有语法错误的快速修复方法吗_Sql_Ms Access - Fatal编程技术网

Sql 我的联接操作中有语法错误的快速修复方法吗

Sql 我的联接操作中有语法错误的快速修复方法吗,sql,ms-access,Sql,Ms Access,我对sql是相当陌生的,对此我可能有些不知所措,但我在join语句中不断遇到语法错误 我正在尝试获取单个角色的特定统计信息。我添加了更多的括号以消除缺少的运算符错误,并且我尝试仅在相同表的内部联接周围添加括号。到目前为止,join语句是唯一抛出错误的语句 SELECT CHARACTER.CharacterName, CHARACTER.Alignment, INVENTORY.Equipped, ITEMS.ItemName, ITEMS.PhysDef, ITEMS.MDef, ITEMS

我对sql是相当陌生的,对此我可能有些不知所措,但我在join语句中不断遇到语法错误

我正在尝试获取单个角色的特定统计信息。我添加了更多的括号以消除缺少的运算符错误,并且我尝试仅在相同表的内部联接周围添加括号。到目前为止,join语句是唯一抛出错误的语句

SELECT CHARACTER.CharacterName, CHARACTER.Alignment, INVENTORY.Equipped, 
ITEMS.ItemName,
ITEMS.PhysDef, ITEMS.MDef, ITEMS.Dodge, ITEMS.Damage, ITEMS.CritMultiplier, 
ITEMS.Range,
ITEMS.AttackSpeed, JOB_CHARACTER.JobLevel, RACE_CHARACTER.RacialLevel, 
RACE.RaceName, RACE.Strength,
RACE.Skill, RACE.Vitality, RACE.Arcane, RACE.Spirit, RACE.Charisma, 
RACE.Luck, JOB.JobName,
JOB.HP, JOB.AttackBonus, JOB.Agility, JOB.Might, JOB.SpellPower, JOB.Vital, 
JOB.Nimble, JOB.Mental,
JOB.Curese, JOB.SpellCasting, JOB.ManaBase, JOB.ManaType, JOB.Ki, 
SKILLS.Alchemy, SKILLS.Awareness,
SKILLS.Climb, SKILLS.Coach, SKILLS.Construction, SKILLS.Decieve, 
SKILLS.DisarmMechanism,
SKILLS.DiscernTruth, SKILLS.Dishearten, SKILLS.Fly, SKILLS.Forge, 
SKILLS.Gymnastics,SKILLS.Identify,
SKILLS.Leadership, SKILLS.Lore_9Realms, SKILLS.Lore_Alternative, 
SKILLS.Lore_Arcane,
SKILLS.Lore_Arithmancy, SKILLS.Lore_Divine, SKILLS.Lore_Geography, 
SKILLS.Lore_Nature,
SKILLS.Lore_Nobility, SKILLS.Lore_Religion, SKILLS.Lore_Spiritual, 
SKILLS.Medical, 
SKILLS.Performance, SKILLS.Ride, SKILLS.Steal, SKILLS.Stealth, 
SKILLS.Subterfuge,
SKILLS.Swim, SKILLS.Tailor, SKILLS.UseContraption, SKILLS.Wilderness

FROM (((((((CHARACTER INNER JOIN RACE_CHARACTER ON 
CHARACTER.CharacterID=RACE_CHARACTER.CharacterID)
LEFT JOIN JOB_CHARACTER ON CHARACTER.CharacterID=JOB_CHARACTER.CharacterID)
LEFT JOIN INVENTORY ON CHARACTER.CharacterID=INVENTORY.CharacterID)
INNER JOIN INVENTORY ON ITEMS.ItemID =INVENTORY.ItemID)
INNER JOIN JOB ON JOB.JobID=JOB_CHARACTER.JobID)
LEFT JOIN SKILLS ON JOB.JobID=SKILLS.JobID)
INNER JOIN RACE ON RACE.RaceID=RACE_CHARACTER.RaceID)

WHERE  ((CHARACTER.CharacterID)=1) AND ((JOB.JobID)=3) AND 
((RACE.RaceID)=6);

我希望它能输出单个字符的统计信息、名称和技能,但它目前没有输出任何内容。

您的
select
语句从
ITEMS
表中获取8个字段:

SELECT 
    ...
    ITEMS.ItemName,
    ITEMS.PhysDef, 
    ITEMS.MDef,
    ITEMS.Dodge,
    ITEMS.Damage, 
    ITEMS.CritMultiplier, 
    ITEMS.Range,
    ITEMS.AttackSpeed,
    ...
但是,您的
from
子句所引用的
表是

FROM 
    (
        (
            (
                (
                    (
                        (
                            (
                                CHARACTER INNER JOIN RACE_CHARACTER ON 
                                CHARACTER.CharacterID=RACE_CHARACTER.CharacterID
                            )
                            LEFT JOIN JOB_CHARACTER ON 
                            CHARACTER.CharacterID=JOB_CHARACTER.CharacterID
                        )
                        LEFT JOIN INVENTORY ON 
                        CHARACTER.CharacterID=INVENTORY.CharacterID
                    )
                    INNER JOIN INVENTORY ON ----------< INVENTORY table referenced twice
                    ITEMS.ItemID =INVENTORY.ItemID
                )
                INNER JOIN JOB ON 
                JOB.JobID=JOB_CHARACTER.JobID
            )
            LEFT JOIN SKILLS ON 
            JOB.JobID=SKILLS.JobID
        )
        INNER JOIN RACE ON 
        RACE.RaceID=RACE_CHARACTER.RaceID
    )

请注意,我已将两个
内部联接
更改为
左侧联接
,因为如果在
左侧联接
右侧(或
右侧联接
左侧)的表上使用
内部联接
,然后您将收到一个不明确的外部联接错误。

您是否使用Access查询生成器来构造此SQL?Access将为您添加括号。尝试一次添加一个表并查看数据,直到它无法显示您期望的内容。@BenJ。这不返回任何行的最可能原因是没有与
WHERE
子句匹配的内容。您可以发布错误详细信息吗?这非常有效,非常感谢!感谢您对模糊外部连接错误的提醒,它帮助我修复了另一个数据库项目上的错误!
SELECT 
    CHARACTER.CharacterName, 
    CHARACTER.Alignment, 
    INVENTORY.Equipped, 
    ITEMS.ItemName,
    ITEMS.PhysDef, 
    ITEMS.MDef,
    ITEMS.Dodge,
    ITEMS.Damage, 
    ITEMS.CritMultiplier, 
    ITEMS.Range,
    ITEMS.AttackSpeed, 
    JOB_CHARACTER.JobLevel,
    RACE_CHARACTER.RacialLevel, 
    RACE.RaceName, 
    RACE.Strength,
    RACE.Skill,
    RACE.Vitality, 
    RACE.Arcane, 
    RACE.Spirit, 
    RACE.Charisma, 
    RACE.Luck,
    JOB.JobName,
    JOB.HP, 
    JOB.AttackBonus, 
    JOB.Agility, 
    JOB.Might, 
    JOB.SpellPower,
    JOB.Vital, 
    JOB.Nimble, 
    JOB.Mental,
    JOB.Curese, 
    JOB.SpellCasting,
    JOB.ManaBase, 
    JOB.ManaType, 
    JOB.Ki, 
    SKILLS.Alchemy, 
    SKILLS.Awareness,
    SKILLS.Climb, 
    SKILLS.Coach, 
    SKILLS.Construction, 
    SKILLS.Decieve, 
    SKILLS.DisarmMechanism,
    SKILLS.DiscernTruth, 
    SKILLS.Dishearten, 
    SKILLS.Fly, 
    SKILLS.Forge, 
    SKILLS.Gymnastics,
    SKILLS.Identify,
    SKILLS.Leadership, 
    SKILLS.Lore_9Realms, 
    SKILLS.Lore_Alternative, 
    SKILLS.Lore_Arcane,
    SKILLS.Lore_Arithmancy, 
    SKILLS.Lore_Divine, 
    SKILLS.Lore_Geography, 
    SKILLS.Lore_Nature,
    SKILLS.Lore_Nobility, 
    SKILLS.Lore_Religion, 
    SKILLS.Lore_Spiritual, 
    SKILLS.Medical, 
    SKILLS.Performance, 
    SKILLS.Ride, 
    SKILLS.Steal, 
    SKILLS.Stealth, 
    SKILLS.Subterfuge,
    SKILLS.Swim, 
    SKILLS.Tailor, 
    SKILLS.UseContraption, 
    SKILLS.Wilderness
FROM 
    (
        (
            (
                (
                    (
                        (
                            (
                                CHARACTER INNER JOIN RACE_CHARACTER ON 
                                CHARACTER.CharacterID=RACE_CHARACTER.CharacterID
                            )
                            LEFT JOIN JOB_CHARACTER ON 
                            CHARACTER.CharacterID=JOB_CHARACTER.CharacterID
                        )
                        LEFT JOIN INVENTORY ON 
                        CHARACTER.CharacterID=INVENTORY.CharacterID
                    )
                    LEFT JOIN ITEMS ON 
                    ITEMS.ItemID =INVENTORY.ItemID
                )
                LEFT JOIN JOB ON 
                JOB.JobID=JOB_CHARACTER.JobID
            )
            LEFT JOIN SKILLS ON 
            JOB.JobID=SKILLS.JobID
        )
        INNER JOIN RACE ON 
        RACE.RaceID=RACE_CHARACTER.RaceID
    )
WHERE 
    CHARACTER.CharacterID = 1 AND
    JOB.JobID = 3 AND 
    RACE.RaceID = 6