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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ADO.NET] Requete sur dataset avec subquery

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ADO.NET] Requete sur dataset avec subquery

n°1626076
axis
Posté le 18-10-2007 à 01:36:47  profilanswer
 


 
Bonjour,
 
J'essaye de faire une requête assez simple sur mon dataset avec une subquery..
La requete est lancé via le .select d'une datatable, et la subquery est un select sur une autre datatable du dataset.
Ca ressemble à ça (j'ai coupé les declarations etc..) :
 
 
--------------------------------------------------------------------------------
 
dtrT_requete  =  datatable1.select("(Genre = 2) AND (PersonneId  NOT IN (SELECT ElementId FROM datable2 WHERE (Type = 2) ))" )
 
 
--------------------------------------------------------------------------------
 
Mais j'ai un message d'erreur "générique".  
Est-ce possible que les subquery ne soient pas possible dans ce genre de requêtes ??  
 
Si je fais :
 
dtrT_requete  =  datatable1.select("(Genre = 2) AND (PersonneId  NOT IN (39,40 ))" )
 
Cela fontionne très bien.. Toutes mes lignes avec Genre = 2 et dont PersonneId <> de 39 ou 40 sont retournées.
La sous requete : SELECT ElementId FROM datable2 WHERE (Type = 2)    elle retourne elle bien 39, 40 !
J'ai testé dans le query designer de visual studio et sur la même base de donnée (access).
 
 
 
Quelqu'un aurait une solution ?
Faut-il faire la sous requete d'abords, convertir ça dans une variable pour utiliser le NOT IN  ??    
 
Merci d'avance!

mood
Publicité
Posté le 18-10-2007 à 01:36:47  profilanswer
 

n°1631244
axis
Posté le 25-10-2007 à 21:36:09  profilanswer
 

:)

n°1631423
MagicBuzz
Posté le 26-10-2007 à 11:22:48  profilanswer
 

je pense effectivement que tu ne peux pas écrire de sous-requête dans un "select" d'un dataset. tu dois trouver une autre solution pour filtrer, genre récupérer la liste des personne id à la main

n°1632052
axis
Posté le 27-10-2007 à 01:42:25  profilanswer
 

merci..
 
bon..
je vais faire la sous requete avant, la garder dans une array et re transformer cela en string :/
 

n°1632235
MagicBuzz
Posté le 28-10-2007 à 07:43:02  profilanswer
 

sinon, j'ai un collègue au taff qui était amoureux des filtres dans les dataset (genre un bon gros select * sans clause where pour alimenter le DS, puis des bon gros filtres des familles dans le DS pour récupérer ce qu'il voulait). J'ai jamais vu trop l'intérêt du truc : ça ne me semple pas plus facile à écrire, absolument pas portable, ça empêche la séparation en couches de l'appli, etc.
 
bref, moi j'en ai jamais eu besoin, et je ne m'en suis jamais servit (faut dire que ça seule fois où j'ai essayé ça n'a pas marché, j'en garde pas un bon souvenir en plus :D).
 
enfin voilà. je te conseille d'essayer de faire sans. mise à part cas très spécifiques (et encore, j'ai beau chercher, je vois pas dans quels cas tu peux avoir besoin de "tout", puis la seconde d'après de "trois fois rien" ) je te conseille d'exécuter des requêtes SQL directement dans le SGBD à chaque fois. c'est au SGBD de faire ce travail, pas au poste client.

n°1632642
axis
Posté le 29-10-2007 à 03:38:23  profilanswer
 

A vrai dire, mon programme charge l'ensemble des données dans le dataset à l'ouverture : je travaille avec un fichier *.mdb et non un sql server, c'est donc bien facile de charger le fichier "onload" puis de le refermer.
 
Ensuite, je fais tout à partir du Dataset.. c'est plus rapide :)
 
Donc je suis un peu déçu des requetes SELECT proposées dans le dataset.. dommage car pour le moment j'ai été étonné des très nombreuses possibilitées du dataset!
 
Alors j'ai plusieurs choix : soit je créer la requête et l'envoi au fichier puis récupère le résultat, soit je fais de même avec un stored procedure, ou enfin je crée la sous requete avant.
Pour le moment j'ai essayé la sous requete avant le SELECT et ça marche bien.. je pense que je vais garder cela.
 
Pour les filtres, je ne l'ai encore jamais fais.. est-ce que tu pense que je peux mettre une requete dans le filtre ? (exemple dans le filtre mettre un autre .SELECT)
car si le filtre a besoin de données toute prêtes (exemple "<> 39, 40" ) dans ce cas ça ne m'avance pas je dois tout de même faire la sous requete en premier et le garder dans une array..
 
merci :)


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

  [ADO.NET] Requete sur dataset avec subquery

 

Sujets relatifs
[ACCESS/SQL] Mot de passe dans RequêteI need help ! Requete MySQL sur plusieurs table
requête multitablessouci de prog et de requete
Probleme de requête SQL[RESOLU] problème d'heure dans requête mysql (heure d'hiver)
Requete MySQL sur deux tables liéeshibernate debug requete
[Résolu] WMI requete WQL[MySQL] pb avec une requête et EXISTS
Plus de sujets relatifs à : [ADO.NET] Requete sur dataset avec subquery


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