Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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
Mysql 如何获得相同外键的两倍连接值?_Mysql_Sql - Fatal编程技术网

Mysql 如何获得相同外键的两倍连接值?

Mysql 如何获得相同外键的两倍连接值?,mysql,sql,Mysql,Sql,我目前有一种情况可以用3个SQL查询轻松解决,但我想知道是否可以在一个查询中完成 我有以下表格: symbol similarity ------- ------------ id | name | latex id | base_symbol_id | similar_symbol_id 我要选择,以便我的结果如下所示: query_result ------------

我目前有一种情况可以用3个SQL查询轻松解决,但我想知道是否可以在一个查询中完成

我有以下表格:

  symbol                     similarity
  -------                    ------------

  id | name | latex          id | base_symbol_id | similar_symbol_id
我要选择,以便我的结果如下所示:

  query_result
  ------------

  similarity_id | base_formula_id | base_formula_name | base_formula_latex | similar_formula_id | similar_formula_name | similar_formula_latex
失败的尝试 我通常用JOIN解决类似的任务。但这次,选择取决于我选择的另一个属性。。。我不知道怎么做。这是我的尝试(当然失败了):

给予


使用给定的表结构,并在中组成一些随机样本输入,以下查询将按照您的需要工作:

SELECT T.id as similarity_id, 
      S1.id as base_formula_id, S1.name as base_formula_name, S1.latex as base_formula_latex,
      S2.id as similar_formula_id, S2.name as similar_formula_name, S2.latex as similar_formula_latex
  FROM similarity T
  LEFT OUTER JOIN symbol S1 ON (T.base_symbol_id = S1.id)
  LEFT OUTER JOIN symbol S2 ON (T.similar_symbol_id = S2.id)

使用给定的表结构,并在中组成一些随机样本输入,以下查询将按照您的需要工作:

SELECT T.id as similarity_id, 
      S1.id as base_formula_id, S1.name as base_formula_name, S1.latex as base_formula_latex,
      S2.id as similar_formula_id, S2.name as similar_formula_name, S2.latex as similar_formula_latex
  FROM similarity T
  LEFT OUTER JOIN symbol S1 ON (T.base_symbol_id = S1.id)
  LEFT OUTER JOIN symbol S2 ON (T.similar_symbol_id = S2.id)

请提供所需输出和表格输入的示例,以帮助我们与您一起解决此问题。@rekaszeru对不起,我不知道我应该提供比我已经做的更多的内容。您给了我们一个您不想要的结果。但我们需要一个示例,其中包含表中的一些行,以及查询结果和解释,为什么这是结果。@VMai我还提供了一个看起来像我想要的表。但是,我已经得到了一个符合我要求的答案。
相似性
为什么有一个
id
?请提供您所需输出和表格输入的示例,以帮助我们与您一起解决此问题。@rekaszeru很抱歉,我不知道我应该提供比我已经提供的更多的内容。您给了我们一个结果,你不想要的。但我们需要一个示例,其中包含表中的一些行,以及查询结果和解释,为什么这是结果。@VMai我还提供了一个看起来像我想要的表。然而,我已经得到了一个符合我要求的答案。
相似性
为什么有一个
id
select sim.id
,base.id
,base.name
,base.latex
,similar.id
,similar.name
,similar.latex
from similarity as sim
join symbol as base on base.id=sim.base_symbol_id 
join symbol as similar on similar.id=sim.similar_symbol_id
SELECT T.id as similarity_id, 
      S1.id as base_formula_id, S1.name as base_formula_name, S1.latex as base_formula_latex,
      S2.id as similar_formula_id, S2.name as similar_formula_name, S2.latex as similar_formula_latex
  FROM similarity T
  LEFT OUTER JOIN symbol S1 ON (T.base_symbol_id = S1.id)
  LEFT OUTER JOIN symbol S2 ON (T.similar_symbol_id = S2.id)