Вы смешиваете неявные соединения с явным соединением. Это допустимо, но вам нужно знать, как это сделать должным образом.
Дело в том, что явные объединения (те, которые реализованы с использованием ключевого слова JOIN
) имеют приоритет над неявными ( «comma» присоединяется, где условие соединения указано в предложении WHERE
).
Вот схема вашего запроса:
SELECT
…
FROM a, b LEFT JOIN dkcd ON …
WHERE …
Вероятно, вы ожидаете, что он будет вести себя например:
SELECT
…
FROM (a, b) LEFT JOIN dkcd ON …
WHERE …
, то есть комбинация таблиц a
и b
соединена с таблицей dkcd
. Фактически, что происходит
SELECT
…
FROM a, (b LEFT JOIN dkcd ON …)
WHERE …
, то есть, как вы уже поняли, dkcd
соединен конкретно с b
и только b
, тогда результат объединения объединяется с a
и далее фильтруется с предложением WHERE
. В этом случае любая ссылка на a
в предложении ON
недействительна, a
неизвестно в этой точке. Вот почему вы получаете сообщение об ошибке.
Если бы я был вами, я бы, вероятно, попытался переписать этот запрос, и одним из возможных решений могло бы быть:
SELECT DISTINCT
a.maxa,
b.mahuyen,
a.tenxa,
b.tenhuyen,
ISNULL(dkcd.tong, 0) AS tongdkcd
FROM phuongxa a
INNER JOIN quanhuyen b ON LEFT(a.maxa, 2) = b.mahuyen
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'
ORDER BY a.maxa
таблицы a
и b
соединяются сначала, тогда результат соединяется с dkcd
. В основном, это тот же запрос, что и ваш, только с использованием другого синтаксиса для одного из соединений, что имеет большое значение: ссылка a.maxa
в состоянии соединения dkcd
теперь абсолютно верна.
Как правильно отметил @Aaron Bertrand, вы должны, вероятно, квалифицировать maxa
с определенным псевдонимом, вероятно a
, в предложении ORDER BY
.
Да, вы можете - DTD говорит:
<!ELEMENT h1 %Inline;>
<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
<!ENTITY % special "%special.pre; | object | img ">
Это в основном означает, что h1
может содержать % Inline
, что состоит из различных элементов, включая img
Для суммирования других ответов , это - W3C, допустимый для использования <img>
внутренняя часть <h1>
.
, Хотя быть completly допустимый, необходимо добавить alt
атрибут к изображению, потому что это обязательно. Этот атрибут не должен содержать текст. Это лучше позволяет ему пустой, чем повторение, что уже записано в эти h1
тег.
В Вашем случае, если изображение чисто декоративно, это должно быть:
<h1>Demo text <img src="anyimage.jpg" alt=""/></h1>
[еще 119] информация о текстовых альтернативах для декоративных изображений: https://www.w3.org/WAI/tutorials/images/decorative /
, Если изображение имеет конкретное значение или содержит текст, отличающийся, чем тот в h1, то используйте соответствующую альтернативу.
Посмотрите, кто его использует: http://www.w3.org/
<h1 class="logo"><a tabindex="2" accesskey="1" href="/"><img src="/2008/site/images/logo-w3c-mobile-lg" width="90" height="53" alt="W3C" /></a> <span class="alt-logo">W3C</span></h1>
Да, это разрешено. Но не забудьте установить атрибут alt
в img
!
Да и нет.
Вы можете разместить изображение внутри элемента h1, но не совсем так ... атрибут alt является обязательным.