web-dev-qa-db-fra.com

Entrée manquante de la clause FROM pour la table

J'essaie d'utiliser un inner join une vue et une table utilisant la requête suivante

SELECT 
   AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, 
   BillLimit, Mode, PNotes, gtab82.memno 
FROM
   VCustomer 
INNER JOIN   
   vcustomer AS v1 ON gtab82.memacid = v1.acid 
WHERE (AcGrCode = '204' OR CreDebt = 'True') 
AND Masked = 'false'
ORDER BY AcName

et l'erreur est

missing FROM-clause entry for table "gtab82"
41
Olavakodan
SELECT 
   AcId, AcName, PldepPer, RepId, CustCatg, HardCode, BlockCust, CrPeriod, CrLimit, 
   BillLimit, Mode, PNotes, gtab82.memno 
FROM
   VCustomer AS v1
INNER JOIN   
   gtab82 ON gtab82.memacid = v1.AcId 
WHERE (AcGrCode = '204' OR CreDebt = 'True') 
AND Masked = 'false'
ORDER BY AcName

Généralement, vous utilisez un alias pour un nom de table uniquement lorsque vous devez préfixer une colonne avec le nom de table en raison des noms de colonnes en double dans les tables jointes et que le nom de la table est long ou lorsque la table est jointe à elle-même. Dans votre cas, vous utilisez un alias pour VCustomer mais vous ne l'utilisez que dans la clause ON pour des raisons incertaines. Vous voudrez peut-être examiner cet aspect de votre code.

28
Patrick

Parce que cette table gtab82 n'est pas dans votre clause FROM ou JOIN. Vous faites référence à la table gtab82 dans les cas suivants: gtab82.memno et gtab82.memacid

9
znurgl