Quand j'appelle Find_MultiKloz('ID_CLIENT', 'GROUPES', [MonALIAS],
('Pierre', 'Paul), [clause supplémentaire]), j'ai bien ma liste... mais
n'existe-t-il pas une instruction SQL directement ?
(Avec "where ... in (...), ça marche pas car c'est un "ou", et avec
Where ID_Client "Pierre" and ID_Client "Paul" me renvoie un
ensemble vide... et c'est normal)
jace1975
Messages postés81Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention12 octobre 20071 17 nov. 2006 à 18:42
C'est pas l'endroit pour poster ce genre de question mais bon ....
Il y a plein de facon de faire (qui dépendent parfois de ton SGBD)
une parmi d'autre :
select distinct(id_groupe) from ta_table
where id_groupe in ( select distinct id_group from ta_table where id_client='Pierre')
and id_groupe in ( select distinct id_group from ta_table where id_client='Paul')
pas testé mais ca devrait marcher.... j'espère mais attention cependant au cout d'execution d'un 'in', ca depend du sgbd
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 17 nov. 2006 à 22:50
La requête de jayce1975 devrait fonctionner et on peut même la compacter en :
SELECT DISTINCT id_groupe FROM Groupes G
WHERE G.id_groupe IN (
SELECT DISTINCT id_groupe
FROM Groupes H
WHERE H.id_client <> G.id_client)
ou, mieux encore :
SELECT DISTINCT id_groupe FROM Groupes G
INNER JOIN Groupes H ON H.id_groupe = G.id_groupe
AND H.id_client <> G.id_client
Mais le problème avec ces deux requêtes, c'est qu'elle ne tiennent pas compte de savoir si on recherche pierre+paul ou pierre+jacques.
Une formule plus appropriée :
SELECT G.id_groupe||" -> "||G.id_client||" + "||H.id_client AS result
FROM Groupes G
JOIN Groupes H
ON H.id_groupe = G.id_groupe
AND LOWER(H.id_client) = 'paul'
WHERE LOWER(G.id_client) ='pierre'
La concaténation n'est proposée ici qu'à des fins de contrôle visuel, bien entendu.
Reste à injecter les deux parties variables et qui remplaceront pierre et paul dans cetet dernière requête.
Si besoin d'explications, y a qu'à demander
Bonsoir m'sieurs dames
May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.afipa.net
jace1975
Messages postés81Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention12 octobre 20071 18 nov. 2006 à 14:08
Comme tu le vois il y a plein de solution a toi de choisir.
Par expérience et si je peux te donner un petit conseil en passant, privilégie toujours le SQL ou Procédure SQL, plutot que delphi pour faire ce genre de traitement sur les données.
Ton code en sera plus simple et plus lisible et ca évitera les usines à gaz inmaintennables.