Je suis sûr que c'est quelque chose de vraiment simple que je néglige, mais MS SQL est nouveau pour moi - je suis (ou du moins pensé que j'étais) assez à l'aise avec MySQL de base cependant.Quel est le problème avec ce SQL?
SELECT l.link_id, l.link_allcount, d.desc_id, d.desc_count, d.desc_text, h.hour_17, dl.day_19
FROM lnktrk_links AS l, lnktrk_hourly AS h, lnktrk_daily AS dl
LEFT JOIN lnktrk_descriptions AS d ON l.link_id = d.link_id
WHERE l.link_id = h.link_id AND l.link_id = dl.link_id AND l.link_is_click = 1
L'erreur que je reçois est:
'The multi-part identifier "l.link_id" could not be bound.
Cependant l.link_id existe certainement. La requête suivante sans jointure fonctionne comme prévu:
SELECT l.link_id, l.link_allcount, d.desc_id, d.desc_count, d.desc_text, h.hour_17, dl.day_19
FROM lnktrk_links AS l, lnktrk_hourly AS h, lnktrk_daily AS dl, lnktrk_descriptions AS d
WHERE l.link_id = h.link_id AND l.link_id = dl.link_id AND d.link_id = l.link_id AND l.link_is_click = 1
Notez que l.link_id est une clé primaire. (d.link_id ne l'est pas). – Jhong
C'est une très mauvaise pratique d'utiliser des jointures implicites et le problème que vous avez ici est l'une des raisons pour lesquelles. Cette syntaxe est obsolète depuis 18 ans, pourquoi l'utilisez-vous encore? Vous devez toujours utiliser des jointures explicites. Les jointures explicites sont plus faciles à maintenir et moins susceptibles de causer des problèmes tels que des jointures accidentelles. Il n'y a aucune excuse pour utiliser une jointure implicite, vous n'y gagnez rien et ils sont sujets aux erreurs. – HLGEM
Une question similaire a été répondue [ici] (http://stackoverflow.com/questions/206558/what-is-a-multi-part-identifier-and-why-cant-it-be-bound) –