使用什么类型的Join?

jon*_*ohn 8 mysql sql database join

我有一个核心表和3个表以不同的方式扩展'核心'表.

我正在使用MLS数据,我有一个'通用'表,其中包含所有mls列表共有的信息,然后是一个具有"住宅"信息的表,一个用于"商业"等...我一直在使用mls当我知道属性类型已知时我知道列表时加入单个表的数字,但是对于搜索我希望加入所有这些并且具有可用于搜索条件的特殊字段(而不是简单地搜索公用表).

什么类型的连接会给我一个包含所有列表的数据集(包括idx表中的扩展字段)?

对于每个公用表记录,只有一个 idx表中有一个相应的记录.

                     ___________
                    |           |
                    |  COMMON   |
                    |           |
                    |___________|
                         _|_   
                          |
       ___________________|_____________________
     _|_                 _|_                   _|_
 _____|_____         _____|______           ____|______ 
|           |       |            |         |           |
|   IDX1    |       |   IDX2     |         |   IDX3    |
|           |       |            |         |           |
|___________|       |____________|         |___________|
Run Code Online (Sandbox Code Playgroud)

JNK*_*JNK 6

如果你想要一行中的所有内容,你可以使用这种格式.基本上它给你所有的"公共"字段,然后是其他字段,如果有匹配,否则NULL:

SELECT  Common.*,
        Idx1.*,
        Idx2.*,
        Idx3.*
FROM Common
LEFT JOIN Idx1
    ON Idx1.MLSKey = Common.MLSKey
LEFT JOIN Idx2
    ON Idx2.MLSKey = Common.MLSKey  
LEFT JOIN Idx3
    ON Idx3.MLSKey = Common.MLSKey
Run Code Online (Sandbox Code Playgroud)

请记住,最好列出字段而不是尽可能使用SELECT *...

另外我假设MySQL语法与SQL Server相同,这就是我使用的.