Die mehrteilige Kennung konnte nicht gebunden werden
Ich habe gesehen, ähnliche Fehler auf, aber ich nicht finden, eine Lösung für mein problem.
Ich habe eine SQL-Abfrage wie:
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;
Wenn ich diese Abfrage ausführen, Sie die Fehlermeldung, Ergebnis ist:
Die multi-part identifier "ein.maxa" konnte nicht gebunden werden. Warum?
P/s: wenn ich unterteilen Sie die Abfrage in 2 einzelne Abfrage, die Sie ausführen, ok.
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;
und
SELECT maxa ,
COUNT(*) AS tong
FROM khaosat
WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011'
AND 'Sep 5 2011'
GROUP BY maxa;
InformationsquelleAutor der Frage PhamMinh | 2011-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mischen Sie implizite joins mit expliziten joins. Das ist erlaubt, aber Sie müssen sich bewusst sein, wie man das richtig.
Die Sache ist die, explizite joins (diejenigen, die implementiert werden, mit der
JOIN
keyword) haben Vorrang vor impliziten ('Komma' - joins, in denen die join-Bedingung angegeben ist, in derWHERE
- Klausel).Hier ist ein überblick Ihrer Suchanfrage:
Sind Sie wahrscheinlich erwarten, dass Sie sich so Verhalten:
ist, die Kombination von Tabellen
a
undb
ist verbunden mit der Tabelledkcd
. In der Tat, was passiert istist, wie Sie vielleicht schon verstanden haben,
dkcd
wird sich speziell gegenb
und nurb
dann das Ergebnis der Verknüpfung ist in Kombination mita
gefiltert und weiter mit derWHERE
- Klausel. In diesem Fall ist jede Bezugnahme aufa
imON
Klausel ungültig ist,a
ist unbekannt an dieser Stelle. Das ist, warum Sie immer die Fehlermeldung.Wenn ich du wäre, würde ich wahrscheinlich versuchen zu umschreiben, dass diese Abfrage, und eine mögliche Lösung könnte sein:
Hier die Tabellen
a
undb
verbunden sind, zuerst, dann das Ergebnis ist Mitglieddkcd
. Im Grunde ist das die gleiche Abfrage wie bei Ihnen, nur mit einer anderen syntax für eine der Verknüpfungen, das macht einen großen Unterschied: die Referenza.maxa
imdkcd
's join-Bedingung wird nun absolut gültig.Als @Aaron Bertrand hat richtig bemerkt, sollten Sie wahrscheinlich zu qualifizieren
maxa
mit einem bestimmten alias, wahrscheinlicha
imORDER BY
- Klausel.InformationsquelleAutor der Antwort Andriy M
Manchmal dieser Fehler tritt auf, wenn Sie Ihr schema (dbo) in deiner Abfrage in einer falschen Art und Weise.
zum Beispiel, wenn Sie schreiben:
erhalten Sie die Fehlermeldung.
In diese Situationen zu ändern:
InformationsquelleAutor der Antwort breceivemail
wenn Sie alies Namen ändern, um den tatsächlichen Namen
beispielsweise
ändern, dass
InformationsquelleAutor der Antwort Alexander Zaldostanov
Ich kämpfte mit der gleichen Fehlermeldung in der SQL SERVER, da hatte ich mehrere Verknüpfungen, die änderung der Reihenfolge der Verknüpfungen es gelöst für mich.
InformationsquelleAutor der Antwort Pavel M.
Ich bin neu in SQL, kam aber über dieses Thema in einem Kurs, den ich nahm und festgestellt, dass die Zuordnung der Abfrage, um das Projekt konkret geholfen zu beseitigen, die multi-part-Fehler. Zum Beispiel das Projekt, das ich erstellt wurde CTU SQL Projekt also machte ich sicher, dass ich gestartet, mein script mit EINSATZ [CTU SQL Projekt] als meine erste Zeile wie folgt Aussehen.
InformationsquelleAutor der Antwort Bogartz
Wenn dieser Fehler passiert in einer
UPDATE
überprüfen Sie dieJOIN
auf die Tabelle mit der Spalte/Feld, das den Fehler verursacht.In meinem Fall war dies aufgrund des Fehlens der
JOIN
selbst, das erzeugt den gleichen Fehler wegen eines unbekannten Feld (als Andriy hingewiesen).InformationsquelleAutor der Antwort CPHPython
Stattdessen können Sie versuchen, verknüpfen von Tabellen, wie,
Sollte diese Arbeit
InformationsquelleAutor der Antwort Suman Kumar
InformationsquelleAutor der Antwort SVaidya
Mein Fehler war, ein Feld, das nicht in der Tabelle.
Tabelle1.Feld1 => ist nicht vorhanden
Tabelle2.Feld1 => richtig ist
Korrigieren Sie den Tabellennamen.
mein Fehler ist aufgetreten, weil der MIT
wenn verwendet, in der Verknüpfung mit anderen Tabellen ...
InformationsquelleAutor der Antwort Zolfaghari
Haben Sie vergessen, sich einige Tabellen? Wenn nicht, dann müssen Sie wahrscheinlich verwenden einige Aliase.
InformationsquelleAutor der Antwort JedatKinports
In meinem Fall das Problem stellte sich heraus, dass der alias-name, den ich gegeben hatte, auf den Tisch. "oa" zu sein scheint, nicht akzeptabel für SQL Server.
InformationsquelleAutor der Antwort Hashim Akhtar
Wenn keine der oben genannten arbeiten, versuchen Sie, das kopieren von bekannten Ergebnisse, treffen Sie eines der Suchkriterien, um eine temporäre Tabelle, und dann die Verknüpfung auf.
InformationsquelleAutor der Antwort JosephDoggie
Ich war mit dem gleichen Fehler von JDBC. Alles überprüft und meine Anfrage war in Ordnung. Stellte sich heraus, in die where-Klausel habe ich ein argument:
Und der Wert des Arguments ich war vorbei, in der null war. Dies gibt auch den gleichen Fehler, das ist irreführend, weil, wenn Sie im internet suchen, sind Sie am Ende, dass etwas falsch ist mit der query-Struktur, aber es ist nicht in meinem Fall. Dachte nur, jemand hat vielleicht das gleiche Problem
InformationsquelleAutor der Antwort xbmono