Full Join sur MS Access
donc je suis en train de faire une jointure sur MS Access 2003, mais simplement qu'il n'a pas de soutien. Alors, j'ai essayé de prendre mes deux instructions select, puis se joindre à un à l'aide d'une jointure GAUCHE et de faire une UNION avec la même déclaration, mais avec un RIGHT join. L'accès m'a donné un message d'erreur indiquant qu'il ya quelque chose de mal avec la commande JOIN. Heres quelques sql...
SELECT tbl_Vendors.VendorName, tbl_Inventory.ItemNum,
tbl_Inventory.Color, tbl_Inventory.InInventory,
tbl_Inventory.OutInventory,
(tbl_Inventory.Stocks + tbl_Inventory.InInventory -
tbl_Inventory.OutInventory) AS Balance,
tbl_Inventory.Weight, tbl_Inventory.CF,
(tbl_Inventory.Weight *Balance) AS TotalWeight,
(tbl_Inventory.CF * Balance) AS TotalCF,
tbl_Inventory.NoteOrder, tbl_ItemHistory.orderDate,
tbl_ItemHistory.POHistory, tbl_ItemHistory.InorOut,
tbl_ItemHistory.Unit
FROM (tbl_Vendors INNER JOIN tbl_Inventory
ON tbl_Vendors.vid = tbl_Inventory.VendorID)
LEFT JOIN tbl_ItemHistory
ON tbl_Inventory.ItemNum = tbl_ItemHistory.ItemNum
ORDER BY tbl_Inventory.ItemNum, tbl_ItemHistory.orderDate
désolé si ce n'est pas dans le code de format, de l'accès sql je suppose que c'est tout à fait normal de texte. c'est seulement avec la jointure gauche. si vous avez des idées, merci de le dire. Merci!
edit: étape 2 jointures,
SELECT tbl_Vendors.VendorName, tbl_Inventory.ItemNum, tbl_Inventory.Color,
tbl_Inventory.InInventory, tbl_Inventory.OutInventory,
(tbl_Inventory.Stocks+tbl_Inventory.InInventory-tbl_Inventory.OutInventory) AS Balance,
tbl_Inventory.Weight, tbl_Inventory.CF, (tbl_Inventory.Weight*Balance) AS TotalWeight,
(tbl_Inventory.CF*Balance) AS TotalCF, tbl_Inventory.NoteOrder, tbl_ItemHistory.orderDate,
tbl_ItemHistory.POHistory, tbl_ItemHistory.InorOut, tbl_ItemHistory.Unit
FROM (tbl_Vendors INNER JOIN tbl_Inventory ON tbl_Vendors.vid = tbl_Inventory.VendorID) LEFT JOIN
tbl_ItemHistory ON tbl_Inventory.ItemNum = tbl_ItemHistory.ItemNum;
UNION ALL
SELECT tbl_Vendors.VendorName, tbl_Inventory.ItemNum, tbl_Inventory.Color,
tbl_Inventory.InInventory, tbl_Inventory.OutInventory,
(tbl_Inventory.Stocks+tbl_Inventory.InInventory-tbl_Inventory.OutInventory) AS Balance,
tbl_Inventory.Weight, tbl_Inventory.CF, (tbl_Inventory.Weight*Balance) AS TotalWeight,
(tbl_Inventory.CF*Balance) AS TotalCF, tbl_Inventory.NoteOrder, tbl_ItemHistory.orderDate,
tbl_ItemHistory.POHistory, tbl_ItemHistory.InorOut, tbl_ItemHistory.Unit
FROM (tbl_Vendors INNER JOIN tbl_Inventory ON tbl_Vendors.vid = tbl_Inventory.VendorID) RIGHT
JOIN tbl_ItemHistory ON tbl_Inventory.ItemNum = tbl_ItemHistory.ItemNum;
erreur: expression de la jointure pas pris en charge. Le premier morceau de code était bon pour la jointure externe gauche. j'ai essayé deux gauche rejoint et que travaillé. son juste de ne pas prendre mon droit de rejoindre...
Votre liste de champs inclure une expression
AS Balance
, puis tente de référence Balance
dans expressions de champ: TotalWeight; et TotalCF. Laisser ces 2 jusqu'à ce que vous obtenez le reste de travail. Ce serait une honte si le message d'erreur est trompeur, et le véritable problème est le moteur db confond Balance
est cette requête complexe.Merci pour votre commentaire. J'ai essayé et ça na pas encore de travail mais à l'aide de votre raison, je suis allé pour prendre les inner join et cela a fonctionné, je suppose que l'accès cant handle trop réunit? pas trop sûr, mais je vais faire de séparer les points de vue puis faire un ensemble et j'espère que ça va être assez simple pour calculer merci!
OriginalL'auteur Wilson Kao | 2011-08-09
Vous devez vous connecter pour publier un commentaire.
Votre but ultime est d'émuler une JOINTURE EXTERNE COMPLÈTE, mais votre premier obstacle est que " l'Accès de la base de données du moteur se plaint sur votre GAUCHE tentative de JOINTURE. Vous devez créer d'abord une pratique de la REJOINDRE, et je ne peux pas repérer quel est le problème avec l'exemple que vous avez fournis.
N'a Accès accepter cette version simplifiée?
Pour le moment, nous ne sommes pas préoccupés par la liste de champs ou de la COMMANDE PAR ... simplement de savoir si cette requête fonctionne sans erreur et renvoie les lignes correctes.
Si il ne fonctionne pas, voir si ce DROIT se JOINDRE renvoie le reste des lignes dont vous avez besoin.
Vous devrez peut-être modifier la clause where; c'est non testé code air. Mais si cela fonctionne aussi, combiner les 2 requêtes en une:
pour votre commentaire
OriginalL'auteur HansUp
J'ai créé un mannequin de la colonne avec la même valeur sur toutes les lignes des deux tables.
Il peut être fait à la volée.
Voici un exemple où j'ai eu des gens et des activités, et je voulais profiter de chaque personne appariés à chaque activité:
OriginalL'auteur Tom Brannon