首页 > 解决方案 > 如何根据其他两个表的左连接获取表的内容

问题描述

我有一张categories桌子和一张files桌子。有一个category_record_mm用于存储关系的表。我想获取文件的类别,因为我已经写了一个JOIN声明,但是 JOIn 抱怨files. uid不是有效的列。我实际想要的是,如果 category_record_mm. foreign_uid等于某个id。这就是我写的:

SELECT * FROM `categories`
LEFT JOIN `category_record_mm` ON `category_record_mm`.`foreign_uid` = `files`.`uid`
WHERE (`category_record_mm`.`foreign_uid` = 123 )

标签: mysqlsql

解决方案


您缺少 1 JOIN,介于categoriesand之间的那个category_record_mm

这就像有 3 个城镇,AB,在 和C之间有一座桥,在A和之间有B另一个。如果不使用和之间的桥梁,你就无法从到BCACAB

SELECT * FROM `categories`
LEFT JOIN `category_record_mm` ON `category_record_mm`.`categories_uid` = `categories`.`uid`
LEFT JOIN `files` ON `category_record_mm`.`foreign_uid` = `files`.`uid`
WHERE (`category_record_mm`.`foreign_uid` = 123 )

categories_uid是引用表categories和的外键categoriesuid作为主键categories


推荐阅读