0

目的: 反対のタイプが存在しない特定のタイプのすべてのレコードを返すこと。

問題: Select Count を「AND」として使用すると、レコードが返されません

SELECT ct.cntrct_id, ar.addr_1, ar.city_nm, ar.st_cd, ar.zip_code, p.phone_nbr, p.frst_nm, p.lst_nm
    FROM addru ad, addrs ar, cntrt ct, persn p, custm cm
    WHERE ad.cntrct_seq = ct.cntrct_seq
    AND ar.addr_seq = ad.addr_seq
    AND p.person_seq = cm.person_seq
    AND cm.clnt_seq = ct.clnt_seq
    AND ad.active_flg = '1'
    AND ad.dist_id = $dist
    AND substring(ct.cntrct_id from 2 for 1) = '$type'
    AND ((SELECT COUNT(*)
            FROM addru ad, addrs ar, cntrt ct, persn p, custm cm
            WHERE ad.cntrct_seq = ct.cntrct_seq
            AND ar.addr_seq = ad.addr_seq
            AND p.person_seq = cm.person_seq
            AND cm.clnt_seq = ct.clnt_seq
            AND ad.active_flg = '1'
            AND ad.dist_id = $dist
            AND substring(ct.cntrct_id from 2 for 1) != '$type') = 0)
    ORDER BY ct.cntrct_id"

テーブル定義をコピーすると多くのスペースが必要になるため、それらを表示する必要がある場合は、どのテーブル定義か教えてください (情報が多すぎて質問が行き詰まらないようにします)。 SQLクエリの作成方法の誤解から。

4

1 に答える 1

1

私が何かを見逃していない限り、なぜあなたはできないのですか

SELECT ...
FROM ...
WHERE ...
GROUP BY ...
ORDER BY ...
HAVING COUNT(*) = 0

これは、行レベルで「インライン」カウント フィルタリングを実行できるように、クエリを 2 回実行するよりも優れているはずです。

于 2013-01-17T14:33:09.633 に答える