我对SQL还是很新手,在查询方面遇到了一些困难(使用Access,仅供参考)。我已经通过谷歌和StackOverflow进行了搜索,但没有找到完全符合我的情况的结果。(这也可能是因为我不知道正确的搜索术语。)
我有两个相似数据的简单表格。
table1: state, lname, fname, network
table2: state, lname, fname, network
我希望您能够找到在两个表中匹配的每个人/州组合,以及每个人所在的表中的网络:
state, lname, fname, t1.network, t2.network.
每个人可能在每张表中属于多个网络。我想看到这个人属于哪些网络(来自两张表)。
我开始使用以下 JOIN:
SELECT t1.state, t1.lname, t1.fname, t1.network, t2.network
FROM t1 INNER JOIN t2
ON t1.fname=t2.fname AND t1.lname=t2.lname AND t1.state=t2.state
GROUP BY t1.state, t1.lname, t1.fname, t1.network, t2.network
我很快就发现我得到了一个笛卡尔积。因此,如果“NY,Smith,John”在t1中的两个网络中,在t2中有三个网络,我会得到类似于以下内容:
NY, Smith, John, NetworkA, NetworkB
NY, Smith, John, NetworkA, NetworkA
NY, Smith, John, NetworkB, NetworkA
NY, Smith, John, NetworkB, NetworkB
NY, Smith, John, NetworkA, NetworkC
NY, Smith, John, NetworkB, NetworkC
我希望看到的只是:
NY, Smith, John, NetworkA, NetworkA
NY, Smith, John, NetworkB, NetworkB
NY, Smith, John, NULL, NetworkC
有人能给我一些如何继续进行或指导我的建议吗?
ON
子句控制了表的组合方式。将来请在你的问题中包含完整的表定义(即CREATE TABLE
部分)。那会帮助到其他人更好地回答你的问题。欢迎来到 StackOverflow! - BellevueBob