IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Requête SQL imbriquées


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut Requête SQL imbriquées
    Bonjour,

    Je me lance sur un forum pour la première fois, j'ai toujours trouvé les réponses à mes questions dans les forums (merci à tous ceux qui les ont posées et surtout tous ceux qui y ont répondu ;-))

    Mais la j'avoue que depuis plusieurs mois de recherche je trouve aucune solution à mon problème.

    Je souhaite me connecter à une partie de ma base de données pour faire des requêtes SQL (SQL server 2005) trés complexes les une derrières les autres que je récupére dans un dataset.
    J'ai pour le moment lancé les requêtes sur une connexion à l'ensemble de ma BD (la BD comporte 3 tables de plus de 500 000 lignes)
    Certaines étant trop complexes n'arrivent pas a être finalisées (time out)
    Pour que les requêtes les plus complexes puissent être exécutées il faudrait que je puisse les faire sur une partie de la BD sélectionné sur id d'une autre table.
    Ex :
    SELECT *
    FROM table1 INNER JOIN
    table2 ON table1.idTable1 = table2.idTable1 INNER JOIN
    table3 ON table2.idTable2 = table3.idTable3 INNER JOIN
    table4 ON table2.idtable2 = talbe4.idtalbe2
    WHERE table1.idTable1 = @id

    Cette requête récupèrerait les données dont j'ai besoin et m'éviterait de faire une interrogation sur toute la BD.

    J'ai pensé faire mes requêtes dans un dataset typé avec des relations entre chaque datatable, mais le dataset ne sais pas faire de requete sur plusieurs table et surtout des requêtes complexes.
    Je ne peux en aucun cas faire les requêtes par programmation.
    Avez vous une idée pour faire ceci ?

    D'avance merci

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Bah tu mets le résultat de ta requête dans un DataSet.
    Où est le problème?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut
    Je ne peux pas faire de requete SQL dans une dataset.
    Par exemple pour exécuter une requête trés complexe qui contient un select dans un select en interrogeant plusieurs tables ?
    le dataset ne sait faire que des requêtes select sur une seul table (pas de for ni de jointure)
    Mes requetes que j'éxécute se trouve dans une base de données, je ne peux donc pas les faires en VB en interrogeant le Dataset.

    Si c'était possible de faire du SQL dans un dataset, j'aurais la solution à mon problème ....

    La requête que j'ai mis dans mon message est pour la récupération des données à interroger.

    Les requêtes doivent ensuite s'éxécuter sur l'ensemble du résultat retourné dans la requête qui se trouve dans le message.

    J'espère avoir été plus claire ?!?

    As tu une autre idée ?

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 400
    Par défaut
    Bonjour,

    Un Dataset ne fait pas de MultiTable ?
    Et pourtant si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ...
    dim srequete as string=""
    srequete as string="SELECT *"
    srequete as string="FROM table1 INNER JOIN"
    srequete as string="table2 ON table1.idTable1 = table2.idTable1 INNER JOIN"
    srequete as string="table3 ON table2.idTable2 = table3.idTable3 INNER JOIN"
    srequete as string="table4 ON table2.idtable2 = talbe4.idtalbe2"
    srequete as string="WHERE table1.idTable1 = @id"
     
    Dim oAdapter as new data.sqlclient.sqlDataAdapter(srequete,"chaine de connexion")
     
    dim oDataset as new data.dataset
    oAdapter.fill(oDataset )
    ...
    Ton Dataset contient plusieurs tables liées par la propriété ChildRelation.

    A bientôt

  5. #5
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Euh, pourrais me permettre de dire que c'est, à mon humble avis, une fausse route ?

    Tel que je vois l'énoncé du problème et et reste à vérifier que j'ai tout compris dans le bon ordre, je pense que le souci se trouve plutôt vers le serveur SQL que dans le code VB.

    J'ai noté un mot qui me fait toujours peur : TimeOut.

    Je ne pense pas que le DataSet soit plus rapide que le serveur SQL pour requêter. D'abords il faudrait peut être vérifier que le serveur SQL en direct est capable d'éxécuter la requête dans le temps imparti. Ensuite, il faut peut être envisager une petite optimisation des dites requêtes.

    Ensuite, donnes également ton contexte de sortie : une fois ta requête exécutée, t'en fait quoi des données ? De ce côté là aussi il y a peut être un moyen plus efficace de traiter les choses. Par exemple, si tu souhaite afficher les données retounées dans un GridView, un bon paramettrage te permet de charger les page de données les unes aprés les autres, donc tu ne remonte que peu de données à chaque fois.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 10
    Par défaut
    Aie aie aie,

    je pense que j'ai du mal m'exprimer :
    Mes requetes sont optimisées au max, elles sont vraiement trés trés complexes, c'est pour ca qu'il faut que je les exécute seulement sur une partie de ma base de données (Ma BD va augmenter de jour en jour et je dois sélectionner les données que j'interroge (plus de 500 000 ligne par table) la requete que j'ai mis en exemple qui me servirait pour sélectionner les données a exploiter avec mes requêtes complexes, n'aurait plus que 10 000 lignes à 50 000 lignes par table et la les requêts n'auraient plus de TimeOut).

    Je n'ai aucun problème d'affichage puisque ma classe n'affiche pas mais récupère seulement le résultat dans un dataset.

    Sur 100 requêtes lancées il y en a seulement une ou deux qui plante avec un timeOut.

    Si je pouvais lancer les requêtes qui plante sur le dataset que tu me donnes en exemple ca serait super hyper géniale, mais malheureusement je ne peux pas puisque comme dit précédemment je ne peux pas exploiter ou exécuter du code VB à la place des requêtes complexes ...

Discussions similaires

  1. [Toutes versions] Requète SQL imbriqué
    Par Maxpuff dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 05/05/2010, 16h46
  2. Requêtes SQL imbriquées
    Par zpliz dans le forum SQL
    Réponses: 5
    Dernier message: 25/03/2010, 09h58
  3. [MySQL] Requête sql imbriquée
    Par PIEPLU dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/01/2010, 08h44
  4. Requête SQL imbriqué, 3 tables, plusieurs colonnes
    Par opacho dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/07/2009, 09h45
  5. Requête SQL imbriquée
    Par cecile15 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/05/2009, 10h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo