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
4 Réponses :
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
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
Essayez ci-dessous:
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;
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 Code> 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
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 code> 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 code>. Remarque - 2 crochets après de quelle ferme avant chaque nouvelle jointure.
Vous ne devez pas mélanger la liste des tables séparées par des virgules et la clause de jointure explicite
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;
à partir d'item_unt, unité code> doit être juste
à partir de item_unt code>
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 (
, code>) avec moderne (
rejoindre code>).
L'opérateur est manquant @gmb
Quel SGBD utilisez-vous?
J'utilise MS Access @gmb
Que signifie "ne pas fonctionner"?