Double innner

sqlDebutant -  
 sqlDebutant -
Bonjour à tous ,

J'utilise c# pour me connecté à une base de donnée avec Microsoft.Jet.OleDb.4.0;

quand je lance ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part


SELECT *
    FROM `Tarclient`  INNER JOIN    
(SELECT `aaaacd` FROM `Article` IN 'C:\\Mpb\\Bdd\\Article.mdb'  
           INNER JOIN    
          (SELECT `CodArt` FROM `StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb'
          ) `JOIN_StockMag` 
         ON `JOIN_StockMag`.`CodArt` =   `Article`.`aaaacd` 
) `JOIN_Article`
ON `JOIN_Article`.`aaaacd` =   `Tarclient`.`aoaacd`

il me sort :
Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll
Informations supplémentaires : Erreur de syntaxe dans la clause FROM.

alors que
SELECT TOP *  
  FROM `Tarclient`   INNER JOIN    
(SELECT `CodArt` FROM `StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb' 
) `JOIN_StockMag` 
ON `JOIN_StockMag`.`CodArt` =   `Tarclient`.`aoaacd` 

Fonctionne bien

et
SELECT *
 FROM `Tarclient`   INNER JOIN    
(SELECT `aaaacd` FROM `Article` IN 'C:\\Mpb\\Bdd\\Article.mdb' 
) `JOIN_Article` 
ON `JOIN_Article`.`aaaacd` =   `Tarclient`.`aoaacd` 

Fonctionne bien aussi

D'avance merci pour tout aiguillage

1 réponse

  1. diablo13800 Messages postés 3469 Date d'inscription   Statut Membre Dernière intervention   1 872
     
    Bonjour ,

    Pouvez vous essayer en mettant ceci:

    SELECT TOP * 
    FROM `Tarclient` 
    INNER JOIN 
    (SELECT `CodArt` FROM `StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb' 
    ) `JOIN_StockMag` 
    ON `JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd` 
    INNER JOIN 
    (SELECT `aaaacd` FROM `Article` IN 'C:\\Mpb\\Bdd\\Article.mdb' 
    ) `JOIN_Article` 
    ON `JOIN_Article`.`aaaacd` = `Tarclient`.`aoaacd`  


    Il faut bien séparer les inner join quand on fait un multiple comme ceci.
    0
    1. sqlDebutant
       
      Merci avec ça j'obtiens : Erreur de syntaxe (opérateur absent) dans l'expression '`JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd` INNER JOIN (SELECT `aaaacd` FROM `Article` IN 'C:\Mpb\Bdd\Article.mdb' ) `JOIN_Article` ON `JOIN_Article`.`aaaacd` = `Tarclient`.`aoaacd`'.

      requête :
      SELECT  *  FROM `Tarclient` 
      INNER JOIN  (SELECT `CodArt` FROM `StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb' ) `JOIN_StockMag`  
      ON `JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd`  
      INNER JOIN (SELECT `aaaacd` FROM `Article` IN 'C:\\Mpb\\Bdd\\Article.mdb' ) `JOIN_Article`  
      ON `JOIN_Article`.`aaaacd` = `Tarclient`.`aoaacd` 


      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ici : ICI

      Merci d'y penser dans tes prochains messages.


      Le C# c'est le code csharp
      0
    2. diablo13800 Messages postés 3469 Date d'inscription   Statut Membre Dernière intervention   1 872
       
      Bon maintenant je vais essayer de comprendre ce que vous voulez faire

      Essayer de rajouter les alias, ca peut peut-être aider.

      SELECT  *  FROM `Tarclient` 
      INNER JOIN  (SELECT `CodArt` FROM `StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb' ) AS `JOIN_StockMag`  ON `JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd`  
      INNER JOIN (SELECT `aaaacd` FROM `Article` IN 'C:\\Mpb\\Bdd\\Article.mdb' ) AS `JOIN_Article` ON `JOIN_Article`.`aaaacd` = `Tarclient`.`aoaacd` 
      0
    3. sqlDebutant
       
      Erreur de syntaxe (opérateur absent) dans l'expression ...

      en n'en faisant qu'un ça passe :
      SELECT  *  FROM `Tarclient` 
      INNER JOIN  (SELECT `CodArt` FROM `StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb' ) AS `JOIN_StockMag`  ON `JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd`  



      je vais m'arracher les cheveux ^^
      0
    4. diablo13800 Messages postés 3469 Date d'inscription   Statut Membre Dernière intervention   1 872
       
      On va essayer Une autre manière qui pourrait fonctionner:

      SELECT  *  FROM `Tarclient` 
      INNER JOIN  `StockMag` AS `JOIN_StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb'  ON `JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd`
      INNER JOIN `Article` AS `JOIN_Article` IN 'C:\\Mpb\\Bdd\\Article.mdb' ON `JOIN_Article`.`aaaacd` = `Tarclient`.`aoaacd` 


      Je suis pas sûr du positionnement de l'aliasing, a essayer le AS après le IN

      Dites moi si ca fonctionne,

      Si ca ne fonctionne pas essayer que celle-ci :
      SELECT  *  FROM `Tarclient` 
      INNER JOIN  `StockMag` AS `JOIN_StockMag` IN 'C:\\Mpb\\Bdd\\StockMag.mdb'  ON `JOIN_StockMag`.`CodArt` = `Tarclient`.`aoaacd` 
      0
    5. sqlDebutant
       
      Merci :) de ta patience mais en faite :
      https://msdn.microsoft.com/en-us/library/bb177907(v=office.12).aspx
      You can use IN to connect to only one external database at a time.

      Vous pouvez utiliser IN pour vous connecter à une seule base de données externe à la fois.

      du coup ce que je tente de faire ne fonctionnera jamais
      :'(
      0