-1
votes

Comment puis-je faire une jointure intérieure sur la table avec deux tables différentes SQL

J'ai trois tables item_unt code>, élément code>, unité code> Comment puis-je faire rejoindre interne code> pour pour pour Item_unt code> avec élément code> et unité code> J'ai utilisé cette instruction et ne fonctionne pas:

SELECT
  ITEM_UNT.ITEM_NO, ITEM_UNT.ITEM_ID,ITEM_UNT.UNIT_NO,UNIT.UNIT_NO,
  UNIT.UNIT_NAME,ITEM.ITEM_ID, ITEM.ITEM_NAME
FROM ITEM_UNT,UNIT
INNER JOIN UNIT ON UNIT.UNIT_NO =  ITEM_UNT.UNIT_NO 
INNER JOIN ITEM ON ITEM.ITEM_ID =  ITEM_UNT.ITEM_ID


8 commentaires

à partir d'item_unt, unité doit être juste à partir de item_unt


toujours la même erreur @gmb


Quelle erreur obtenez-vous réellement? Veuillez éditer votre question pour ajouter ces informations.


Ne fusionnez pas la vieille syntaxe de jointure (, ) avec moderne ( rejoindre ).


L'opérateur est manquant @gmb


Quel SGBD utilisez-vous?


J'utilise MS Access @gmb


Que signifie "ne pas fonctionner"?


4 Réponses :


0
votes

Vous avez la table de l'unité deux fois sans alias ... Essayez

SELECT ITEM_UNT.ITEM_NO, ITEM_UNT.ITEM_ID,ITEM_UNT.UNIT_NO,UNIT.UNIT_NO, UNIT.UNIT_NAME,ITEM.ITEM_ID, ITEM.ITEM_NAME
FROM ITEM_UNT
INNER JOIN UNIT ON UNIT.UNIT_NO =  ITEM_UNT.UNIT_NO 
INNER JOIN ITEM ON ITEM.ITEM_ID =  ITEM_UNT.ITEM_ID


3 commentaires

Vous ne changez pas dans ma déclaration


Oui, dans votre question, vous avez une unité à côté de item_unt, j'ai pris cela. En outre, avez-vous un élément_no sur votre table Item_unt ainsi que l'élément_id?


oui j'ai l'élément_no dans item_unt en tant que pk et j'ai aussi item_id dans item_unt comme fk qui est un pk dans la table d'objets



0
votes

Essayez ci-dessous:

Option 1: H2>
select iu.item_no,
       iu.item_id,
       iu.unit_no,
       u.unit_no,
       u.unit_name,
       i.item_id,
       i.item_name
from   item_unt iu,
       unit     u,
       item     i
where  u.unit_no = iu.unit_no
and    i.item_id = iu.item_id;


8 commentaires

L'option 1 ne fonctionne pas mais l'option 2 ça marche bien


L'option 2 est une jointure de style ancien et doit être évitée, vérifiez simplement votre syntaxe et nous indique quel message d'erreur vous avez obtenu. Promouvoir l'utilisation de Explic Joindre Sintaxis, Aaron Bertrand a écrit un bel article Mauvaises habitudes de frappe: Utiliser des jointures de style anciennes à ce sujet.


Dans l'accès, vous devez utiliser des parenthèses pour chaque jointure. Vérifiez ici docs.microsoft.com/en-us/office/vba/access/concepts/.../a>


L'erreur est la suivante: l'opérateur est manquant une unité de jointure intérieure U sur u.unit_no = iu.Unit_no Joindre intérieur Item I sur i.item_id = iu.item_id; @Juancarlosoropeza


Comme @juan a dit, je pense que vous devez utiliser de (item_unt iu inner rejoindre l'unité u sur u.Unit_no = iu.unit_no = iu.unit_no = iu.unit_no) IMOITION intérieur item i sur i.item_id = iu.item_id pour la version de jointure .


Merci @ Darrenbartrup-Cook mais si je veux rejoindre une autre table, comment puis-je l'ajouter?


@Borkan ci-dessous sera la syntaxe pour plusieurs tables: sélectionnez iu.item_no, iu.item_id, iu.Unit_no, u.unit_no, u.unit_name, i.item_id, i.Item_name à partir de (((objet_unt iu inner rejoindre unité u sur u .Unit_no = iu.unit_no) Rejoignez interne Item i sur i.item_id = iu.item_id) Rejoindre interne Rejoignez TableX; Plus de détails à: Stackoverflow.com / Questions / 19367565 / ...


Il suffit d'ajouter la table comme une autre joindre et de mettre les crochets dans - de (((iP_unt iu inner unité u sur u.Unit_no = iu.unit_no = iu.unit_no = iu.unit_no) Joindre intérieur Item i sur i.item_id = iu.item_id = iu.item_id) rejoindre interne Rejoignable sur sur une autretable.forign_key = iu.item_id . Remarque - 2 crochets après de quelle ferme avant chaque nouvelle jointure.



0
votes

Vous ne devez pas mélanger la liste des tables séparées par des virgules et la clause de jointure explicite xxx


0 commentaires

0
votes

Je n'ai aucune idée de ce que "ne fonctionne pas" signifie, mais vous pouvez au moins écrire la requête selon la syntaxe de requête d'accès MS. Cela ressemblerait à:

SELECT ITEM_UNT.ITEM_NO, ITEM_UNT.ITEM_ID, ITEM_UNT.UNIT_NO, UNIT.UNIT_NO,
       UNIT.UNIT_NAME, ITEM.ITEM_ID, ITEM.ITEM_NAME
FROM (ITEM_UNT INNER JOIN
      UNIT
      ON UNIT.UNIT_NO =  ITEM_UNT.UNIT_NO 
     ) INNER JOIN
     ITEM
     ON ITEM.ITEM_ID =  ITEM_UNT.ITEM_ID;


0 commentaires