Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 如何内部联接表A+;B和参考表A到多个其他表_Mysql - Fatal编程技术网

Mysql 如何内部联接表A+;B和参考表A到多个其他表

Mysql 如何内部联接表A+;B和参考表A到多个其他表,mysql,Mysql,Im当前已成功地在表a+B之间执行外部联接,如下所示: SELECT * FROM player_img LEFT OUTER JOIN user_play ON player_img.player_img_id = user_play.user_play_entry_player_img_id AND user_play.user_play_uid = 1 WHERE player_img.player_img_id IS null 这提供了表A中的所有结果,这些结果没有任何

Im当前已成功地在表a+B之间执行外部联接,如下所示:

SELECT * FROM player_img
  LEFT OUTER JOIN user_play
  ON player_img.player_img_id = user_play.user_play_entry_player_img_id
  AND user_play.user_play_uid = 1
  WHERE player_img.player_img_id IS null
这提供了表A中的所有结果,这些结果没有任何来自表B的
user\u play\u uid=1

在表A中,我有引用其他表的属性——我也希望查询出这些字段。一些表引用的快速示例:

TABLE_A:
player_img_id (unique key)
player_img_player_id (reference to: TABLE_C "player_id")
player_img_category_id (reference to: TABLE_D "category_id")

TABLE_B:
user_play_entry_player_img_id (reference to TABLE_A: "player_img_id")
user_play_uid (reference to table with user.id)

TABLE_C:
player_id (unique key)
player_country (reference to table with country.id)
player_league (reference to table with league.id)

TABLE_D:
category_id (unique key)
我想我可以按照以下方式做一些事情(当然这根本不起作用)

SELECT u . * , up . * , pi . * , p . * , c . *
  FROM user u, user_play up, player_img pi, player p, country c
  LEFT OUTER JOIN up
  ON pi.player_img_id = up.user_play_entry_player_img_id
  WHERE pi.player_img_id IS null
  AND up.user_play_uid = $this->user_id
  AND pi.player_img_category_id = $this->category_id
  AND pi.player_img_player_id = p.player_id
  AND p.player_country = c.country_id
关于如何将外部联接与跨数据库的引用查找表结合起来,有什么建议吗

编辑: 当前尝试以下建议-查询正在运行,但未显示结果-想法?:/

SELECT u . * , up . * , pi . * , p . * , c . *
  FROM user u
  INNER JOIN player_img pi
  ON pi.player_img_category_id  = 3
  INNER JOIN player p
  ON pi.player_img_player_id    = p.player_id
  INNER JOIN country c
  ON p.player_country           = c.country_id
  LEFT OUTER JOIN user_play up
  ON pi.player_img_id = up.user_play_entry_player_img_id
  WHERE pi.player_img_id IS null
  AND up.user_play_uid      != 1

使用ANSI-92
JOIN
语法,而不是您正在使用的旧语法:

SELECT u . * , up . * , pi . * , p . * , c . *
FROM user u
INNER JOIN player_img     pi ON ...
INNER JOIN player          p ON pi.player_img_player_id = p.player_id
INNER JOIN country         c ON p.player_country        = c.country_id
LEFT OUTER JOIN user_play up ON pi.player_img_id    = up.user_play_entry_player_img_id
WHERE pi.player_img_id IS null
  AND up.user_play_uid = $this->user_id
注意事项:

  • 您的查询中没有关于如何
    与表
    player\u img pi
    与其他表连接的条件

  • 条件
    和up.user\u play\u uid=$this->user\u id
    可能会删除由于
    左连接而出现的不匹配行。在这种情况下,您可能需要将该条件移动到子查询中,而不是直接将该表移动到
    左外部连接中


嗨,马哈茂德,我尝试应用你的建议(你可以看到我的编辑)-但是没有结果。我不确定这是否是你在上一次评论中指出的结果-我有点不确定应该像你建议的那样把它移到哪里?我的测试查询中是否缺少一些内容?@user1231561可能没有满足这些条件的行,请尝试删除这些条件并测试它是否工作正常,对于表
内部连接player\u img pi ON pi.player\u img\u category\u id=3
它与其他表的关系如何?