假设我们有这个模型:
如您所见,行业 ID 可以为空。我可以在拥有 user.id 的同时通过单个 MySQL 查询获取他/她拥有的行业名称(如果有的话)、用户描述、配置文件名称和项目名称(所有项目标题)吗?
是JOIN
的,两张表:
SELECT
i.name,
u.id
FROM Industry AS i
LEFT JOIN `User` AS u ON u.industry_id = i.industry_id;
对于多个表:
SELECT
i.Name AS InustryName,
p.Name AS UserName,
u.Description,
j.title AS ProjectTitle
FROM Industry AS i
INNER JOIN User AS u ON i.id = u.id
INNER JOIN Profile AS p ON p.user_id = u.id
INNER JOIN Project AS j ON u.id = j.user_id;
请注意:我INNER JOIN
在表之间使用,这将只为您提供连接表中的匹配行,您可能需要使用 LEFT JOIN 而不是内部连接来包含不匹配的行,即获取那些没有条目的行业其他表。请参阅此博客文章: