我有两个表,我想知道是否可以在这两个表上写一个查询但它们没有相互连接?
一些示例代码段对我的理解非常有帮助。
表:Payment
Payment_id Payment_status amount
1 1001 201 400
2 1002 403 450
3 1003 204 460
运行查询后:SELECT Payment_status FROM Payment GROUP BY Payment_staus
它给我的结果如下:
Payment_staus
1 201
2 403
3 204
我还有一个名为status_code
的表格为
code description
1 201 In progress
2 403 Complete
3 204 On Hold
在上面的查询中我想要Payment_staus及其各自的描述,结果应该如下所示
Payment_status description
1 201 In progress
2 403 Complete
3 204 On Hold
答案 0 :(得分:1)
SELECT p.payment_id, p.Payment_status, s.description
FROM Payment p
JOIN status_code s
ON p.Payment_status = s.code
这使用SQL“join”来连接status_code表的代码属性上的两个表。
这将为您提供类似
的结果Payment_id Payment_status description
1001 201 In progress
1002 403 Complete
1003 204 On Hold
答案 1 :(得分:1)
笛卡尔联接(注意没有JOIN条件)。记录的所有可能组合都在结果中:
tableA (charfield Char(2))
tableB (numberfield Number(1))
INSERT 'A' INTO tableA;
INSERT 'B' INTO tableA;
INSERT 1 INTO tableB;
INSERT 2 INTO tableB;
SELECT *
FROM tablea CROSS JOIN tableb
结果:
charfield|numberfield
=====================
A |1
A |2
B |1
B |2
答案 2 :(得分:0)
您可以使用UNION查询,但两个子查询中的字段类型/列数必须匹配:
SELECT a, b, c
FROM table1
UNION
SELECT p, q, r
FROM table2
替代方法是简单地进行完整的笛卡尔连接,如果两个表有大量行,则可以返回巨大的结果集 - 您将获得n x m
行