Double innner

Fermé
sqlDebutant - Modifié le 14 mai 2018 à 14:16
 sqlDebutant - 15 mai 2018 à 16:50
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
A voir également:

1 réponse

diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
Modifié le 14 mai 2018 à 15:05
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
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
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
Modifié le 14 mai 2018 à 15:05
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
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
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 844
Modifié le 15 mai 2018 à 09:11
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
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