基于第三个Table连接两个表(SQLite)

Joining Two tables Based on Third Table (SQLite)

我正在尝试使用三个不同的 table 来获取美国所有麦当劳的列表,按 100 英里内的汉堡王数量排序。出于某种原因,我真的很难解决这个问题,我想知道是否有人可以就如何解决这样的问题提供任何建议?

我有所有麦当劳的 table 及其邮政编码,所有邮政编码的 table 和汉堡王的数量,以及 100 以内的所有邮政编码的 table彼此相距数英里。例如:

Mcdonalds table:

NAME zip
McDonalds Park Terrace 11121
McDonalds HWY 103 11412
McDonalds Crestwood 11121
McDonalds Pendleton 26566
McDonalds Smithville 67742
McDonalds HWY 66 43351

BKzips table:

zip numberBKs
11121 2
11412 0
26566 6
43351 0
67742 3
... ...

zipproximity table:

zip1 zip2 distancebetween
11121 11412 23.443
11121 26566 48.211
... ... ...
11412 11121 23.443

我想要的最终结果是 table 每个麦当劳都有一行,列出该麦当劳 100 英里范围内的所有邮编及其 BK 总数。例如:

McDonalds zip zipsWithBKs totalBKs
McDonalds Park Terrace 11121 26566, 11412 6

我已经能够使用内部联接获得一个 table 每个 zip 一行和 BKs:

SELECT McDonalds.NAME, BKzips.zip, BKzips.numberBKs
FROM zipproximity
    INNER JOIN McDonalds
        ON zipproximity.zip1 = McDonalds.zip
    INNER JOIN BKzips 
        ON zipproximity.zip2 = BKzips.zip

但我不知道如何获得我想要的结果。在没有 SQL 的经验和解决这个问题几个小时之间,我很困惑。感谢您的帮助!

差不多了,只是 GROUP BY 和一些聚合函数:

SELECT McDonalds.NAME, McDonalds.zip, GROUP_CONCAT(BKzips.zip, ', ') AS zipsWithBKs, SUM(BKzips.numberBKs) AS totalBKs
FROM zipproximity
    INNER JOIN McDonalds
        ON zipproximity.zip1 = McDonalds.zip
    INNER JOIN BKzips 
        ON zipproximity.zip2 = BKzips.zip
-- WHERE BKzips.numberBKs > 0   -- you probably want this also
GROUP BY McDonalds.NAME, McDonalds.zip;