【问题标题】:MySQL combining 3 tables with 2 from same tableMySQL 将 3 个表与同一个表中的 2 个表结合起来
【发布时间】:2014-03-19 09:39:27
【问题描述】:

所以,我不擅长文字,我会用图片来描述它。

这是我数据库中的 MATSH 表。我的目标是用其他表中的名称替换 Mang_id、Voistkond_1_id 和 Voistkond_2_id。

MATSH.Mang_id = MANG.Mang_id

MATSH.Voistkond_1_id 和 Voistkond_2_id 与 VOISTKONNAD.Voistkond_id 中的相同

所有 3 个表都有所有主键和伪造键。

MATSH

VOISTKONNAD

芒果

但是现在我尝试从表信息中选择,因为数字被替换,但是出现了问题。我的 Teine_voistkond 是从 Voistkond_1_id 而不是 Voistkond_2_id 获取信息...

select MATSH.Matsh_id, MANG.Mang_nimi, MATSH.Voistkond_1_id, VOISTKONNAD.Voistkond_nimi  as Esimene_voistkond, MATSH. Voistkond_2_id, VOISTKONNAD.Voistkond_nimi  as Teine_voistkond, MATSH.Matsh_kuupaev, MATSH.Tulemus, MATSH.Muu_info
from MATSH
join MANG on MATSH.Mang_id = MANG.Mang_id 
join VOISTKONNAD on MATSH.Voistkond_1_id = VOISTKONNAD.Voistkond_id;

但如果我使用,我会

...
 join VOISTKONNAD on MATSH.Voistkond_1_id = VOISTKONNAD.Voistkond_id
join VOISTKONNAD on MATSH.Voistkond_2_id = VOISTKONNAD.Voistkond_id;

这给了我

错误 1066 (42000):不是唯一的表/别名:'VOISTKONNAD'

我尝试使用别名。它给了我。

空集(0.00 秒)

并带有左右连接。它又给了我

空集(0.00 秒)

您现在可能可以理解,我的问题在于 Teine_voistkond 没有显示它应该显示的名称。

我又发现了错误。

【问题讨论】:

  • 尝试使用 JOIN VOISTKONNAD AS v1 ON on MATSH.Voistkond_1_id = v1.Voistkond_idJOIN VOISTKONNAD AS v2 ON on MATSH.Voistkond_2_id = v2.Voistkond_id 并相应地更新您的 SELECT,即类似 SELECT v1.Voistkond_nimi, v2.Voistkond_nimi, ...
  • 为什么是这张照片?
  • @mahok 将它们更改为 v1 v2 并更新 SELECT 不起作用,它与第二张图片中的相同。

标签: php mysql sql join inner-join


【解决方案1】:
  select MATSH.*, MANG.*, VOISTKONNAD1.* , VOISTKONNAD.*
  from MANG
  INNER JOIN MATSH on MATSH.Mang_id = MANG.Mang_id 
  INNER JOIN VOISTKONNAD on MATSH.Voistkond_1_id = VOISTKONNAD.Voistkond_id
  INNER JOIN VOISTKONNAD AS VOISTKONNAD1 ON MATSH.Voistkond_2_id = VOISTKONNAD1.Voistkond_id

【讨论】:

  • 谢谢!根据我的需要修改它对我有很大帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
  • 2021-09-28
  • 2020-02-07
相关资源
最近更新 更多