J'ai vu des erreurs similaires sur SO, mais je ne trouve pas de solution à mon problème. J'ai une requête SQL comme :
SELECT DISTINCT
a.maxa ,
b.mahuyen ,
a.tenxa ,
b.tenhuyen ,
ISNULL(dkcd.tong, 0) AS tongdkcd
FROM phuongxa a ,
quanhuyen b
LEFT OUTER JOIN ( SELECT maxa ,
COUNT(*) AS tong
FROM khaosat
WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011'
AND
'Sep 5 2011'
GROUP BY maxa
) AS dkcd ON dkcd.maxa = a.maxa
WHERE a.maxa <> '99'
AND LEFT(a.maxa, 2) = b.mahuyen
ORDER BY maxa;
Lorsque j'exécute cette requête, le résultat de l'erreur est : L'identifiant en plusieurs parties "a.maxa" n'a pas pu être lié. Pourquoi ?
P/s : si je divise la requête en 2 requêtes individuelles, cela fonctionne bien.
SELECT DISTINCT
a.maxa ,
b.mahuyen ,
a.tenxa ,
b.tenhuyen
FROM phuongxa a ,
quanhuyen b
WHERE a.maxa <> '99'
AND LEFT(a.maxa, 2) = b.mahuyen
ORDER BY maxa;
y
SELECT maxa ,
COUNT(*) AS tong
FROM khaosat
WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011'
AND 'Sep 5 2011'
GROUP BY maxa;
0 votes
Est-ce que le
phuongxa
le tableau comprend une colonnemaxa
?1 votes
Que se passe-t-il si vous ajoutez le groupe par maxa, tong -- juste après le 5 septembre 2011.
0 votes
Oui, c'est le cas. Si je divise la requête en deux sous-requêtes, elle fonctionne bien.
0 votes
Il semble que vous exécutez sur la mauvaise base de données. Ajoutez une instruction "USE [nom de la base de données]" au début de la requête et voyez si vous obtenez toujours l'erreur.
1 votes
Non, je l'ai dit plus haut, si je divise la requête en 2 requêtes individuelles, ça marche bien.
0 votes
Affichez les deux requêtes qui fonctionnent, ou votre schéma. Votre clause order by est erronée (maxa est ambiguë, puisque plus d'une table possède cette colonne) mais cela n'entraînerait pas l'erreur que vous avez postée.