我有一个父表,如果在另外两个表中找到它们,则必须存在所有PROTOCOL和LOT。 我需要找出其他两个表中有多少这些PROTOCOL和LOT:tbl2,tbl3:
parent tbl2 tbl2
|--------|----------|------------|----------|
|PROTOCOL| 150 | 132 | 71 |
|--------|----------|------------|----------|
| LOT | 845 | 724 | 621 |
|--------|----------|------------|----------|
到目前为止,我得到的是:
SELECT DISTINCT PROTOCOL
FROM parent L
LEFT JOIN
(
SELECT DISTINCT PROTOCOL
FROM tbl2
) E
ON L.PROTOCOL = E.PROTOCOL
LEFT JOIN
(
SELECT DISTINCT PROTOCOL
FROM tbl3
) N
ON L.PROTOCOL = N.PROTOCOL
在我加入PROTOCOL
之前,我想让LOT
工作,但我似乎也无法做到这一点。
这可能吗?
答案 0 :(得分:1)
根据你的解释,我认为以下应该这样做:
SELECT COUNT(distinct l.protocol) as parent
,COUNT(distinct e.protocol) as tbl2
,COUNT(distinct n.protocol) as tbl3
FROM parent L
LEFT JOIN tbl2 E on L.protocol=E.protocol
LEFT JOIN tbl3 N on L.protocol=N.protocol
UNION ALL
--same for the LOP count
答案 1 :(得分:1)
试试这个:
SELECT COUNT(distinct p.protocol)
FROM PARENT p INNER JOIN tbl2 t2 ON p.protocol = t2.protocol
INNER JOIN tbl3 t3 ON p.protocol = t2.protocol
或者这个:
SELECT COUNT(distinct p.protocol)
FROM PARENT p
WHERE p.protocol IN (SELECT protocol FROM tbl2)
AND p.protocol IN (SELECT protocol FROM tbl3)