我只能假设已提出此问题,我在这里看了一个多小时,可能已经看了一下,却不知道这是我的答案。如果是这种情况,请原谅我,也许可以指出正确的答案?
我有一个主要的字符表,此表中的主要ID。其他两个表由char_id引用。我想从所有三个与字符表ID号匹配的表中提取所有列。
Characters
id, col1, col2, col3
equip_profiles
id, char_id, col1, col2, col3
inventory
id, char_id, col1, col2, col3
需要返回
characters.id, characters.col1, characters.col2, characters.col3, equip_profiles.col1, equip_profiles.col2, equip_profiles.col3, inventory.col1,
inventory.col2, inventory.col3,
我当然在所有表中都有几列,只是尝试使用characters从所有三个表中获取所有内容。id是根ID,而char_id是指向字符的指针。
请帮助!
SELECT characters.*, equip_profiles.*, inventory.*
FROM characters
JOIN equip_profiles ON characters.id = equip_profiles.char_id
JOIN inventory ON characters.id = inventory.char_id
答案 0 :(得分:0)
您的表名称为Characters
,但在查询中您将其用作characters
。可能是问题所在,我也建议为表使用别名:
SELECT a.*, b.*, c.*
FROM characters a
FULL OUTER JOIN equip_profiles b ON a.id = b.char_id
FULL OUTER JOIN inventory c ON a.id = c.char_id
编辑: 当左(table1)或右(table2)表记录中有匹配项时,FULL OUTER JOIN关键字返回所有记录。
答案 1 :(得分:0)
这三个表都包含相同的列名id,您必须指定其他两个表id并使用其他名称,例如
equip_profiles.id为eqid
inventory.id为invid
或者您可以在声明所需内容时指定选择查询
查询可能类似于
SELECT characters.*, equip_profiles.id as eqid,equip_profiles.col1, inventory.id as invid,inventory.col1
FROM characters
JOIN equip_profiles ON characters.id = equip_profiles.char_id
JOIN inventory ON characters.id = inventory.char_id,