Requete , where avec plusieurs conditions [SQL] - SQL/NoSQL - Programmation
Marsh Posté le 19-01-2005 à 17:36:31
salut,
si tu n'as que ces deux contraintes, tu peux faire
SELECT c1.identifiant FROM competencescv c1,c2
WHERE c1.identifiant = c2.identifiant
AND c1.competences = 'anglais'
AND c2.competences = 'cocol'
Marsh Posté le 19-01-2005 à 17:39:02
bah j'ai autant de possibilité que de competences (+/- 50 )
donc la je dois creer a chaque vois un c3,c4 etc.. ?
Marsh Posté le 19-01-2005 à 17:42:56
Si tu veux avoir l'identifiant qui correspond à x compétences, cette méthodes n'est pas adaptée.
Marsh Posté le 19-01-2005 à 17:50:16
mrmask a écrit : Bonjour, |
SELECT tab.identifiant FROM tab WHERE tab.competence='Cobol'
INTERSECT
SELECT tab.identifiant FROM tab WHERE tab.competence='Anglais'
essaie ca
Marsh Posté le 19-01-2005 à 17:52:51
Erreur dans la clause WHERE à côté de 'INTERSECT'.
Impossible d'analyser le texte de la requête.
Marsh Posté le 19-01-2005 à 17:53:07
j'ai testé ca :
SELECT identifiant FROM competencescv WHERE (competences = 'anglais')
intersec
SELECT identifiant FROM competencescv WHERE (competences = 'cobol')
erreur aussi
Marsh Posté le 19-01-2005 à 17:59:43
intersec ne fonctionne pas avec sql server.
De toutes façon le pb est le meme car il faudra boucler si le nombre de compétences lors de la recherche est superieur à 2
Marsh Posté le 19-01-2005 à 18:01:06
dites je suis pas un expert en sql
mais c tellement "exeptionnel" ce que je cherche ?
Marsh Posté le 19-01-2005 à 18:05:32
Faut utiliser UNION sous SqlServer
Pas l'exemple sous la main mais demain au taf ...
Marsh Posté le 19-01-2005 à 18:14:09
essaie
Code :
|
Marsh Posté le 19-01-2005 à 18:24:22
la colonne 'comptencescv.competences' n'est pas valide dans la clause HAVING parce qu'elle n'est pas contenue dans une fonction d'agrégatin ou dans la clause group by.
Marsh Posté le 19-01-2005 à 18:26:50
SELECT DISTINCT identifiant
FROM competencescv
GROUP BY identifiant, competences
HAVING (competences IN ('C++', 'J++'))
Marsh Posté le 19-01-2005 à 18:27:07
enfait il me ressort tout ce qui est c++ et j++ ici dans cet ex
Marsh Posté le 20-01-2005 à 09:13:55
oui, j'avais posté ça à l'arrache en partant du bureau
cela devrait convenir davantage
Code :
|
Marsh Posté le 20-01-2005 à 13:28:59
merci,
le count correspond a quoi ?
le nombre de critere ?
car si je met juste cobol je n'ai aucun resultat
Marsh Posté le 20-01-2005 à 14:01:41
ecoute je te remercie ca a l'air de fonctionner
merci bien
Marsh Posté le 20-01-2005 à 14:14:38
ça ne marche que si le couplet (identifiant, competences) est unique, car si tu peux avoir des doublons dans ta table, ça n'ira pas ...
Marsh Posté le 20-01-2005 à 14:21:50
Reply
Marsh Posté le 19-01-2005 à 17:14:45
Bonjour,
j'ai une base sous sql serveur et une appli en VB
j'ai un table competencescv
format : identifiant,competences
Ex :
285857,anglais
285857,cobol
888857,asp
888857,j++
etc...
Je cherche l'identifiant de celui qui a pour competences : anglais et cobol soit 285857
j'ai testé plusieur choses je n'y suis pas arrivé appart avec un boucle
ou je repete :
AND (identifiant IN ( (SELECT identifiant FROM competencescv WHERE competences = '" & Trim(List1.List(i%)) & "')))"
mais c'est tres lourd et pas propre
SELECT * FROM competencescv
WHERE (competences IN ('anglais')) AND (competences IN ('cobol'))
ca ne fonctionne pas
merci de votre aide