mysql - 试图在两个表之间的 MySQL 中链接多对一
问题描述
再会,
我正在从 FileMaker 数据库中获取数据并在 MySQL 中将其用于其他目的。我正在处理一个标题数据库,其中包含作者信息、ISBN、标题、价格等。这个问题的重点在于原始数据库维护主题代码的六个字段。三个用于履行系统,三个 BISC 代码。我创建了一个单独的表,其中包含所有主题代码和描述。我可以在一个标题记录中包含 1 到 6 个可能的代码。
我可以弄清楚如何从一个代码中获取单个描述,但我无法完全弄清楚如何在单个 SELECT 中获取多个描述。我创建了 6 个外键 Sub1,Sub2,Sub3,BI1,BI2,BI3 都指向主题表中的一个代码。Subjects 文件只有两个字段,代码和描述。
我认为这一点应该有效:
SELECT Titles.ISBN,Titles.Title,Titles.Subject_1, Subjects.Description AS S1.Description, Titles.Subject_2, Subjects.Description AS S2.Description
FROM Titles
Left JOIN Subjects As S1
ON Titles.Subject_1 = S1.Code<
Left JOIN Subjects As S2
ON Titles.Subject_2 = S2.Code
WHERE Subject_2 <> "";
给我一个语法错误。那么如何为每个可能的主题引用一个描述字段呢?从其他谷歌搜索到左边加入,但似乎没有什么不同。对于 SQL 来说还是很新的东西,所以如果我真的忽略了显而易见的事情,请原谅我。这在 Linux 下的 MySQL 5.7 中。
谢谢。
解决方案
你几乎是对的。但是连接表中的列必须在左侧而不是别名
SELECT
Titles.ISBN
,Titles.Title
,Titles.Subject_1
, S1.Description Description_subject1
, Titles.Subject_2
, S2.Description Description_subject2
FROM Titles
Left JOIN Subjects As S1
ON Titles.Subject_1 = S1.Code
Left JOIN Subjects As S2
ON Titles.Subject_2 = S2.Code
WHERE Subject_2 <> "";
推荐阅读
- python - Python中的加载栏崩溃
- javascript - (模态)循环组件
- python - 如何使用循环填充字典
- angular - Angular - JSONP 注入脚本未调用回调
- php - 致命错误:在第 1943 行的 C:\wamp\www\Scaffolding\PHPMailer-master\src\PHPMailer.php 中找不到类 'PHPMailer\PHPMailer\Exception'
- c - 验证输入数据。在函数内部或外部,最佳方式
- jquery - 为什么我不能将带有表单的 .load() Jquery 发送到加载的页面?
- javascript - javascript 阶乘函数得到 RangeError
- javascript - Ionic InAppBrowser PDF iOS 无后退按钮
- google-apps-script - 将超链接连接到一个单元格而不丢失超链接属性