English 中文(简体)
在一个请求中提出多项请求
原标题:Make multiple requests in one request

我有一个多重请求 我想做一个简单的请求

INSERT INTO SERVICEPAYANT_CLIENT (RE_ID, TYPE_DONNEES)
SELECT CLIENT_ID, 160 AS TYPE_DONNEES
FROM    REFERENTIEL r, CLIENT_APPLICATIF ca
WHERE r.ID = ca.ID_REFERENTIEL
AND r.TYPE=1
AND NOT EXISTS (
    SELECT * FROM SERVICEPAYANT_CLIENT sp
    WHERE sp.RE_ID = CLIENT_ID AND TYPE_DONNEES = 160)
GROUP BY CLIENT_ID
HAVING COUNT(*)>0;

INSERT INTO SERVICEPAYANT_CLIENT (RE_ID, TYPE_DONNEES)
SELECT CLIENT_ID, 161 AS TYPE_DONNEES
FROM    REFERENTIEL r, CLIENT_APPLICATIF ca
WHERE r.ID = ca.ID_REFERENTIEL
AND r.TYPE=1
AND NOT EXISTS (
    SELECT * FROM SERVICEPAYANT_CLIENT sp
    WHERE sp.RE_ID = CLIENT_ID AND TYPE_DONNEES = 161)
GROUP BY CLIENT_ID
HAVING COUNT(*)>0;

INSERT INTO SERVICEPAYANT_CLIENT (RE_ID, TYPE_DONNEES)
SELECT CLIENT_ID, 162 AS TYPE_DONNEES
FROM    REFERENTIEL r, CLIENT_APPLICATIF ca
WHERE r.ID = ca.ID_REFERENTIEL
AND r.TYPE=1
AND NOT EXISTS (
    SELECT * FROM SERVICEPAYANT_CLIENT sp
    WHERE sp.RE_ID = CLIENT_ID AND TYPE_DONNEES = 162)
GROUP BY CLIENT_ID
HAVING COUNT(*)>0;

INSERT INTO SERVICEPAYANT_CLIENT (RE_ID, TYPE_DONNEES)
SELECT CLIENT_ID, 163 AS TYPE_DONNEES
FROM    REFERENTIEL r, CLIENT_APPLICATIF ca
WHERE r.ID = ca.ID_REFERENTIEL
AND r.TYPE=1
AND NOT EXISTS (
    SELECT * FROM SERVICEPAYANT_CLIENT sp
    WHERE sp.RE_ID = CLIENT_ID AND TYPE_DONNEES = 163)
GROUP BY CLIENT_ID
HAVING COUNT(*)>0;
最佳回答

我认为可以简化如下:

INSERT INTO SERVICEPAYANT_CLIENT (RE_ID, TYPE_DONNEES)
SELECT  DISTINCT 
        CLIENT_ID, 
        t.TYPE_DONNEES
FROM    REFERENTIEL r, 
        CLIENT_APPLICATIF ca,
        (   SELECT  160 AS Type_Donnees FROM Dual UNION ALL
            SELECT  161 AS Type_Donnees FROM Dual UNION ALL
            SELECT  162 AS Type_Donnees FROM Dual UNION ALL
            SELECT  163 AS Type_Donnees FROM Dual 
        ) t
WHERE   r.ID = ca.ID_REFERENTIEL
AND     r.TYPE = 1
AND     NOT EXISTS 
        (   SELECT  1
            FROM    SERVICEPAYANT_CLIENT sp
            WHERE   sp.RE_ID = CLIENT_ID 
            AND     t.TYPE_DONNEES = sp.TYPE_DONNEES
        )
问题回答

单加一个插件应有助于:

INSERT INTO SERVICEPAYANT_CLIENT (RE_ID, TYPE_DONNEES)
SELECT CLIENT_ID, T.TYPE_DONNEES
  FROM (SELECT 160 TYPE_DONNEES FROM dual UNION ALL
        SELECT 161 FROM dual UNION ALL
        SELECT 162 FROM dual UNION ALL
        SELECT 163 FROM dual) t,
       REFERENTIEL r,
       CLIENT_APPLICATIF ca
 WHERE r.ID = ca.ID_REFERENTIEL
   AND r.TYPE = 1
   AND NOT EXISTS (SELECT *
                     FROM SERVICEPAYANT_CLIENT sp
                    WHERE sp.RE_ID = CLIENT_ID
                      AND TYPE_DONNEES = T.TYPE_DONNEES)
 GROUP BY T.TYPE_DONNEES, CLIENT_ID
/* HAVING COUNT(*) > 0 (unnecessary) */;




相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

Connecting to Oracle 10g with ODBC from Excel VBA

The following code works. the connection opens fine but recordset.recordCount always returns -1 when there is data in the table. ANd If I try to call any methods/properties on recordset it crashes ...

How to make a one to one left outer join?

I was wondering, is there a way to make a kind of one to one left outer join: I need a join that matches say table A with table B, for each record on table A it must search for its pair on table B, ...

Insert if not exists Oracle

I need to be able to run an Oracle query which goes to insert a number of rows, but it also checks to see if a primary key exists and if it does, then it skips that insert. Something like: INSERT ALL ...

How can I store NULLs in NOT NULL field?

I just came across NULL values in NOT-NULL fields in our test database. How could they get there? I know that NOT-NULL constraints can be altered with NOVALIDATE clause, but that would change table s ...

Type reference scope

I m studying databases and am currently working on a object-relational DB project and I ve encountered a small problem with the number of possible constraints in an object table. I m using "Database ...

OracleParameter and DBNull.Value

we have a table in an Oracle Database which contains a column with the type Char(3 Byte). Now we use a parameterized sql to select some rows with a DBNull.Value and it doesn t work: OracleCommand ...

热门标签