begin process at 2010 02 10 10:03:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

SQL Server

 > 

VStudio 2008 et SQL Server CE => bug multiple clause AND


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

VStudio 2008 et SQL Server CE => bug multiple clause AND

jeudi 16 octobre 2008 à 22:19:34 | VStudio 2008 et SQL Server CE => bug multiple clause AND

Max207

Bonjour ou bonsoir!

J'ai téléchargé le VStudio Express 2008 C# afin de coder une petite application de gestion d'une bibliothèque de film. J'ai utilisé SQL CE (3.5) comme base de données. J'ai donc créé mes tables, mes fichiers .cs et tout le tralala et ça a très bien fonctionné jusque ici. Cependant, là, je suis confronté à un problème dont j'ignore l'origine ou peut-être est-ce là un bug...

Nivo SQL j'ai une table nommée CATEGO_FILM qui sert de liaison entre ma table FILM et CATEGORIE. Ma table FILM sert à stocker les films avec leur titre. Ma table Catégorie sert à stocker les catégories de film (science-fiction, fantastique, épouvante, etc.). Un film peut donc avoir plusieur catégorie (table CATEGO_FILM). Donc voilà, ça c'était pour planter le décor.

Dans mon application, j'ai développé une fonctionnalité qui permet d'afficher une liste de film en cochant des checkboxs correspondant aux catégories.
J'ai donc dans ma table CATEGO_FILM quelque chose du genre:

ID_FILM | ID_CATEGO
1 | 1
1 | 2
2 | 1
2 | 3
3 | 1
3 | 2

Si je construis ma requete par programmation et que j'obtiens quelque chose comme ceci:
SELECT ID_FILM FROM CATEGO_FILM WHERE ID_CATEGO = 1
alors j'obtiens logiquement les id_films suivant: 1,2,3

Si j'ai plusieurs catégorie, je construis ma requête comme ceci:
SELECT ID_FILM FROM CATEGO_FILM WHERE ID_CATEGO = 1 AND ID_CATEGO = 2
je devrai avoir l'id du film: 1 et 3 MAIS je n'obtiens rien...

Je ne suis pas un crack en SQL CE mais il me semble que ma requête SQL est correct ou alors il faut utiliser une autre syntaxe pour faire ce que je veux faire...

Avez-vous la clé du problème ?

Merci
vendredi 17 octobre 2008 à 07:59:54 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

xmox667

Membre Club
Salut,
Ta requête SQL est correcte.
Le résultat par contre sera :  1,2 et 3
Vérifie que ta table CATEGO_FILM ne soit pas vide:
Select * from CATEGO_FILM
A+
vendredi 17 octobre 2008 à 08:44:08 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

Bidou

Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
Je ne suis pas un pro du SQL non plus, mais je ne pense pas que la requete soit correcte (en passant, pour le SQL, tu as meilleur temps de poster sur www.sqlfr.com).
Moi je ferais un group by sur ID_FILM et ensuite un HAVING pour mettre les conditions...
Mais encore une fois, le SQL c'est pas mon fort


-My Blog-
vendredi 17 octobre 2008 à 09:49:55 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

ed73

Bonjour,

La requête n'est pas correcte car ID_CATEGO ne peut être égal à 1 et à 2 en même temps, il faut utiliser OR au lieu de AND :

SELECT ID_FILM FROM CATEGO_FILM WHERE ID_CATEGO = 1 OR ID_CATEGO = 2

Tu obtiendras 1,1,3,3 ensuite il faut grouper les enregistrements obtenus si tu souhaites seulement 1,3

SELECT ID_FILM FROM CATEGO_FILM WHERE ID_CATEGO = 1 OR ID_CATEGO = 2 GROUP BY ID_FILM

vendredi 17 octobre 2008 à 10:02:22 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

xmox667

Membre Club
Salut ed73,
Tu as raison je devais avoir la tête dans le coltard dans j'ai répondu.
A+

vendredi 17 octobre 2008 à 10:57:24 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

Max207

Merci pour vos réponses.

ed73,

J'ai déjà tenté le OR et donc fait ceci comme toi:
SELECT ID_FILM FROM CATEGO_FILM WHERE ID_CATEGO = 1 OR ID_CATEGO = 2

Mais cela me retourne comme id_film: 1,2,3 ! Et c'est logique car l'id_film 2 contient bien l'id_categorie 2.
Ce que je cherche à faire , c'est d'afficher uniquement les films ayant comme id catégorie 1 et 2. Je cherche toujours mais sans succès (enfin pas tout de suite car je suis au boulot là :-) ).

(c'est plus lisible ainsi)
vendredi 17 octobre 2008 à 11:51:00 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

ed73

Réponse acceptée !
Bon, j'avais lu ton premier mail un peu vite ;-)

Voici une requête qui marche :

SELECT ID_FILM
FROM CATEGO_FILM
WHERE ID_CATEGO = 1 OR ID_CATEGO = 2
GROUP BY ID_FILM
HAVING COUNT(ID_FILM) =2

Si ton film est de catégorie 1 et 2 alors tu auras 2 enregistrements (films 1 et 3) mais s'il est de catégorie 1 ou 2 tu n'en auras qu'un seul (film 2) et la clause having le retire des enregistrements renvoyés.
vendredi 17 octobre 2008 à 13:22:44 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

Max207

Salut ed73,

C'est exactement ce que je cherchais et c'est fonctionnel à 100 %

J'ai réussi à automatiser la construction de la requête maintenant et ma recherche est correct! Je savais que j'aurai pas du brosser certain cours de SQL dans le temps .
Parait qu'il y avait aussi une autre solution avec un INTERSECT ... mais celui-ci n'est pas pris en charge par SQL CE.

Merci beaucoup de ton aide en tout cas car j'étais vraiment bloqué.
Bonne journée

vendredi 17 octobre 2008 à 13:29:37 | Re : VStudio 2008 et SQL Server CE => bug multiple clause AND

Bidou

Administrateur CodeS-SourceS
J'avais donc bien raison, héhé.



-My Blog-


Cette discussion est classée dans : table, sql, id, film, catego


Répondre à ce message

Sujets en rapport avec ce message

Problème propriétés distinct et top dans proc stockée [ par Kati83 ] Bonjour à tous,Je voudrais mettre en place une procédure stockée qui me récupère des informations dans 2 tables.Voici la structure de mes 2 tables :Ta Comment utiliser un DataSet ??? [ par Arlequine ] Salut,J'aimerai savoir comment faire pour utiliser un DataSet ??Actuellement j'ai réussie :- à générer un DataSet.xsd (cela me permet d'avoir une modé sql command problème [ par Fildomen ] Salutje veux selectionner d'une base les cellules qui sont classés de 1000 à 1100 après d'avoir appliquer un order by, comment faire??? je m'explique: Probleme de requete SQL [ par JuGuuL ] Bonjour, Ceci est plus une question SQL que C# mais bon, vu que je le fais en C# !!! J'ai une connexion a une base de donnée Access Quand je fais c Gérer une liste comme une table [ par _osiris_ ] BonjourQuel est le meilleur moyen pour gérer une liste d'objet, un peu comme une table ?J'ai créé une structure du type:class personne int id string Image dans Sql Server [ par 238723 ] Bonjour, j'ai un petit probleme dans sql server J'ai une colonne de type image dans une table et j'aimerai insérer une image dans chaque ligne de ma t Probleme entre 2 tables Important [ par giorgio08 ] Re bonjour a tous, j'ai enfin trouver une solution par rapport a mon probleme. mais j ai qd meme un gros problemej ai 2 tables une PARTIES et une RESU XML dans SQL server [ par lorenzo2603 ] Bonjour à tous!! Je manipule des fichiers XML et je voudrai enregistrer les données des XML dans SQL server sous forme de table. J'ai beaucoup de mal requete sql [ par bousfiha ] bonjour et merci de lire ma question. je veux effectuer une requéte de sélection sur ma base access dans mon application .net.j'ai une variable id de enregistrer des fichiers txt dans une table sql server code c# [ par saadaouimouad ] bonjour, comment dois je stocker des fichiers text "que j'accéde à travers une liste box dans un partage réseau" dans une table sql server: code, int


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,296 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales