假设,我有以下两张表
因为这两张表直接没有关联关系,比如我需要查找姓名是张三,且省份是上海的结果
我目前是这样写的
select * from A表, B表 where A.name = '张三' AND B.省份 = '上海'
问题是这样的语句,如果没有条件,就会出现笛卡尔积的问题(select from A表, B表),这样就会出现42 = 8条数据。
但我还有一个C表,C表跟这两个表格都有关联的如图:
像这样的情况,大家都是怎样写查询语句的呢?是把一张数据多的作为主表如:
select * from a表 left join c表 on a表.id=c.nid left join b表 on b.id=c.sid where name='张三' and 省份 = '上海'
请大佬指点,或者需要更改表结构的,请直接说明,非常感谢。
C 和 A、B 都是多对一的关系,先关联 A 和 C,以便按 A 的姓名进行筛选。inner join 或者 C left join A 都可以
结果再来关联 B
这两句合并起来,大概应该可以(确实太久没写 SQL,不太清楚了,自己试试吧)