Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1070 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Requete , where avec plusieurs conditions

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Requete , where avec plusieurs conditions

n°956685
mrmask
Mask A Gaz
Posté le 19-01-2005 à 17:14:45  profilanswer
 

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 :D
 
 
 
SELECT * FROM competencescv
WHERE     (competences IN ('anglais')) AND (competences IN ('cobol'))
 
ca ne fonctionne pas :(
 
merci de votre aide  
 
 
 

mood
Publicité
Posté le 19-01-2005 à 17:14:45  profilanswer
 

n°956721
mdevlieg
Posté le 19-01-2005 à 17:36:31  profilanswer
 

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'

n°956730
mrmask
Mask A Gaz
Posté le 19-01-2005 à 17:39:02  profilanswer
 

bah j'ai autant de possibilité que de competences (+/- 50 ) :D
 
donc la je dois creer a chaque vois un c3,c4 etc.. ?
 

n°956734
mdevlieg
Posté le 19-01-2005 à 17:42:56  profilanswer
 

Si tu veux avoir l'identifiant qui correspond à x compétences, cette méthodes n'est pas adaptée.

n°956742
ukyo81
Posté le 19-01-2005 à 17:50:16  profilanswer
 

mrmask a écrit :

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 :D
 
 
 
SELECT * FROM competencescv
WHERE     (competences IN ('anglais')) AND (competences IN ('cobol'))
 
ca ne fonctionne pas :(
 
merci de votre aide


 
SELECT tab.identifiant FROM tab WHERE tab.competence='Cobol'  
INTERSECT
SELECT tab.identifiant FROM tab WHERE tab.competence='Anglais'
 
essaie ca

n°956749
mrmask
Mask A Gaz
Posté le 19-01-2005 à 17:52:51  profilanswer
 

Erreur dans la clause WHERE à côté de 'INTERSECT'.
Impossible d'analyser le texte de la requête.

n°956751
mrmask
Mask A Gaz
Posté le 19-01-2005 à 17:53:07  profilanswer
 

j'ai testé ca :
SELECT     identifiant FROM         competencescv WHERE     (competences = 'anglais')
intersec
SELECT     identifiant FROM         competencescv WHERE     (competences = 'cobol')
 
erreur aussi

n°956764
mdevlieg
Posté le 19-01-2005 à 17:59:43  profilanswer
 

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

n°956768
mrmask
Mask A Gaz
Posté le 19-01-2005 à 18:01:06  profilanswer
 

dites je suis pas un expert en sql
 
mais c tellement "exeptionnel" ce que je cherche ?

n°956772
WhyMe
HFR ? Nan, connais pas ...
Posté le 19-01-2005 à 18:05:32  profilanswer
 

Faut utiliser UNION sous SqlServer
Pas l'exemple sous la main mais demain au taf ...

mood
Publicité
Posté le 19-01-2005 à 18:05:32  profilanswer
 

n°956775
pains-aux-​raisins
Fatal error
Posté le 19-01-2005 à 18:14:09  profilanswer
 

essaie

Code :
  1. select identifiant
  2. from competencescv
  3. group by identifiant
  4. having competences in ('anglais', 'cobol')

n°956781
mrmask
Mask A Gaz
Posté le 19-01-2005 à 18:24:22  profilanswer
 

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.

n°956783
mrmask
Mask A Gaz
Posté le 19-01-2005 à 18:26:50  profilanswer
 

SELECT DISTINCT identifiant
FROM         competencescv
GROUP BY identifiant, competences
HAVING      (competences IN ('C++', 'J++'))

n°956784
mrmask
Mask A Gaz
Posté le 19-01-2005 à 18:27:07  profilanswer
 

enfait il me ressort tout ce qui est c++ et j++ ici dans cet ex

n°957107
pains-aux-​raisins
Fatal error
Posté le 20-01-2005 à 09:13:55  profilanswer
 

oui, j'avais posté ça à l'arrache en partant du bureau :D
cela devrait convenir davantage
 

Code :
  1. SELECT identifiant
  2. FROM
  3.    (SELECT DISTINCT identifiant, competences
  4.     FROM COMPETENCESCV
  5.     WHERE competences IN ('anglais', 'cobol'))
  6. GROUP BY identifiant
  7. HAVING COUNT(*) = 2


Message édité par pains-aux-raisins le 20-01-2005 à 09:16:37
n°957384
mrmask
Mask A Gaz
Posté le 20-01-2005 à 13:28:59  profilanswer
 

merci,
 
le count correspond a quoi ?
le nombre de critere ?
car si je met juste cobol je n'ai aucun resultat :D

n°957397
pains-aux-​raisins
Fatal error
Posté le 20-01-2005 à 13:41:43  profilanswer
 

le count doit être égal au nombre de critères.

n°957419
mrmask
Mask A Gaz
Posté le 20-01-2005 à 14:01:41  profilanswer
 

ecoute je te remercie ca a l'air de fonctionner
merci bien

n°957433
Beegee
Posté le 20-01-2005 à 14:14:38  profilanswer
 

ç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 ...

n°957440
pains-aux-​raisins
Fatal error
Posté le 20-01-2005 à 14:19:19  profilanswer
 

d'où le distinct :o

n°957445
Beegee
Posté le 20-01-2005 à 14:21:50  profilanswer
 


 
j'l'avais point vu  :jap:

n°957450
mrmask
Mask A Gaz
Posté le 20-01-2005 à 14:29:41  profilanswer
 

j'ai préparé le buché :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Requete , where avec plusieurs conditions

 

Sujets relatifs
[SQL SERVER + C++Builder] Nbre d'instances et instances valides[PL/SQL] Probleme de relation avec le c++
appel de fichiers .sql dans pro*CComment lire une bdd SQL Server sous windows depuis Linux
select d'une resultat isssus d'une procedure sqlGérer un site en plusieurs langues...
[SQL server]automatiser la supprimession des fichier de transactionjava-sql-interface swing
[Resolu] JDBC => Requete SQL (Delete) 
Plus de sujets relatifs à : [SQL] Requete , where avec plusieurs conditions


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR