MySql,3个表,需要使用主表中的ID的所有列

时间:2019-02-01 06:30:50

标签: php mysql

我只能假设已提出此问题,我在这里看了一个多小时,可能已经看了一下,却不知道这是我的答案。如果是这种情况,请原谅我,也许可以指出正确的答案?

我有一个主要的字符表,此表中的主要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 

2 个答案:

答案 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,