所以我有这3张桌子:
T1
T1
--
ID
--
1
2
3
4
5
T2
T2
--
ID
--
1
2
3
T1_2连接(N-N)T1与T2
T1_2
-----------
ID_T1|ID_T2
-----|-----
1 |2
3 |2
我想得到以下结果
EXPECETED RESULT
-----------------
IS_CONNECTED|ID_T1
-----------------
1 |1
0 |2
1 |3
0 |4
0 |5
我来到这里:
SELECT
SUM(
CASE
WHEN T1.ID=T1_2.ID_T1 THEN 1
ELSE 0
END
) IS_CONNECTED,
T1_2.ID_T1
FROM T1,T1_2
GROUP BY T1_2.ID_T1
;
但它看起来很丑陋,我认为必须有一个更漂亮,更优化的做法。
答案 0 :(得分:2)
希望这有帮助
select t1.id, decode(id_t1, null, 0,1) IS_CONNECTED
from t1, t1_2 where t1.id =id_t1 (+)
答案 1 :(得分:0)
编写此查询的更好方法是:
SELECT T1.ID, COUNT(T2.ID_T1) as IS_CONNECTED,
FROM T1 LEFT JOIN
T1_2
ON T1.ID = T1_2.ID_T1
GROUP BY T1.ID;
注意:
JOIN
语法。DECODE()
函数。COUNT()
,它更易于编写且更易于理解。