Une requête qui s’exécute mal [Résolu]

Signaler
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014
-
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014
-
Bonjour,

Je souhaite exécuter une requête à partir de mon programme en VB.NET sur une base SQL SERVER.

Voici mon code :
 Dim Maconnexion As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=C:\MABADO.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")

        Dim CmdSelectClients As New SqlCommand("SELECT idEntite FROM ENTITE E JOIN PLIEUR P ON (E.idEntite=P.idEntite)", Maconnexion)

        Dim dt As New DataTable()


        Dim daTable As New SqlDataAdapter(CmdSelectClients)


        Maconnexion.Open()

        daTable.Fill(dt)

        ListBox1.DataSource = dt



        ListBox1.DisplayMember = "idEntite"
        ListBox1.ValueMember = "idEntite"


        Maconnexion.Close()


Mais cela ne fonctionne pas, ma listbox reste vide.
Cependant, si je ne fais pas de INNER join et que je fais juste "SELECT idEntite FROM ENTITE", cela fonctionne bien.

Je pensais que mon INNER JOIN était faux donc j'ai attaqué directement la BDD avec la requête INNER, qui m'a bien renvoyé les résultats souhaités.

J'ai essayé le Pas à pas mais ça ne m'a pas aidé.

Quelqu'un saurait pourquoi ?

Merci d'avance

11 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
un WHERE

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
9
Bonjour,

Je pense que comme ça c'est équivalent

Select nom 
FROM Personne P,Homme H,Grand G
where P.nom = H.nom 
and G.nom = H.nom

et plus compréhensible pour moi

Bonne soirée



Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
Messages postés
219
Date d'inscription
mercredi 26 octobre 2011
Statut
Membre
Dernière intervention
22 juin 2017
9
Je viens de tester inner join fonctionne en sql server

et si ce n'est que pour les index on peut préciser lequel utiliser dans la clause FROM

Bonne soirée



Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

ps : je viens de contourner le problème en modifiant la requête "SELECT idEntite FROM ENTITE WHERE idEntite IN(SELECT idEntite From PLIEUR)"
Mais je ne comprends toujours pas pourquoi ça ne fonctionne pas avec un INNER JOIN
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

Peut être parce que tu avais écris "JOIN" et pas "INNER JOIN"
Perso, je n'aime pas cette syntaxe et ne l'utilise jamais.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Bonjour,

Non j'avais aussi essayé avec INNER JOIN :/

C'est étrange
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
JOIN est possible dans ce cas (équi jointure)

je n'aime pas non plus cette syntaxe.
Elle est censée accelerer les traitements en indexant la chose comme il convient.
les requetes sont maintenant optimisée et compilées... j'ignore si c'est daubes syntaxiques que sont les jointures sont toujours à préconiser.

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

j'ignore si c'est daubes syntaxiques que sont les jointures sont toujours à préconiser.


Par quoi veux tu remplacer un INNER JOIN
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Mais par exemple quand tu vas chercher des infos d'une table partir d'une autre :
Select nom FROM Personne P INNER JOIN Homme H On P.nom H.nom INNER JOIN Grand G on G.nomH.nom

(je crois que c'est du SQL2)

Comment comptes tu faire ?


Est ce que ça remettrais en cause ce qu'on apprends en cours ?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Absolument.

Le INNER JOIN est propre à Access, pas au SQL (à ma connaissance)
Messages postés
286
Date d'inscription
dimanche 3 octobre 2010
Statut
Membre
Dernière intervention
16 mai 2014

Merci pour ces précisions !