繁体   English   中英

试图在两个表之间的 MySQL 中多对一链接

[英]Trying to link many-to-one in MySQL between two tables

再会,

我正在从 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 <> "";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM