détails des fameuses tables pour éclaircir la chose
table xps0 (table des participations)
-evt_nom (nom de l'évènement)
-societe
-broker (is Null)
-statut (participant)
-so0_nrid (lié à la table so0 par so0.nrid)
table so0 (table des sociétés)
-societe
-nrid (lié à la fois à xps0.so0_nrid et lnk0.lnk2_nrid)
table lnk0 (table des rdv pour un évènement)
-ref_1 (societe)
-ref_2 (broker)
-lieu_rv (lieu du rdv)
-lnk2.nrid (lié à so0.nrid)
la table lnk0 et xps0 ne sont liées que par l'intermédiaire de la table so0
point de détail important aucune des sociétés non demandées n'est présente dans la table lnk0 (c'est là que ça coince, car si j'avais pu définir un broker bidon pour les sociétés non demandées j'aurai déjà résolu mon pb :) )
J'ai réussi mais c'est un truc de fou
voici la fameuse requête
SELECT a.societe, a.var3, ROUND(a.num1, 0) AS Expr1, a.titulaire, b.statut AS Smallcap, b.fax, b.Facture, c.nbdemande
FROM (SELECT so0.nrid, so0.societe, so0.num1, so0.titulaire, so0.var3
FROM sysadm.so0 so0
WHERE so0.type LIKE ('emetteurs') AND so0.template IS NULL AND (so0.var3 NOT IN ('villeA', 'villeB', 'villeC') OR
so0.var3 IS NULL) AND (so0.titulaire IN ('titulaire1', 'titulaire2', 'titulaire3'))) a LEFT OUTER JOIN
(SELECT so0.nrid, so0.societe, xps0.statut, xps0.contrat_signe AS fax, xps0.potentialite AS Facture
FROM sysadm.so0 so0 JOIN
sysadm.xps0 xps0 ON so0.nrid = xps0.so0_nrid
WHERE xps0.evt_nom LIKE ('évènement%') AND so0.type LIKE 'emetteurs') b ON a.nrid = b.nrid LEFT OUTER JOIN
(SELECT so0.nrid, ref_1, COUNT(*) AS 'nbdemande'
FROM sysadm.lnk0 lnk0 LEFT JOIN
sysadm.so0 so0 ON lnk0.lnk1_nrid = so0.nrid
WHERE lnk0.relation_name_nrid = xxxxxxxxxxxxxx AND lnk0.template IS NULL AND lnk0.lieu_rv LIKE ('evt%')
GROUP BY so0.nrid, ref_1) c ON a.nrid = c.nrid
WHERE (c.nbdemande IS NULL) AND (b.statut LIKE 'participant') AND (a.societe NOT IN
(SELECT sysadm.xps0.societe
FROM sysadm.xps0
WHERE sysadm.xps0.evt_nom LIKE ('évènement%') AND sysadm.xps0.broker IS NOT NULL))
Pour des raisons d'anonymat et d'info un peu sensible j'ai modifié certaines appellations