Ошибка SQL: многослойный идентификатор “имя таблицы. ColumnName” не мог быть связан

Лучше не пойти за борт на технологии ключа лицензии. Независимо от того, что Вы делаете может быть взломан решительным пользователем, и Вы рискуете добавления проблем, которые останавливают законных пользователей, использующих Ваше приложение. Я даже видел код, который был защищен с , Аппаратные ключи Запора взламываются. Шифрования Вашего ключа лицензии и запутывания Вашего кода должно быть достаточно для препятствия оппортунистическим нападениям, существует мало точки, идущей кроме того.

Eric Sink записал, что хорошая статья, отвечающая на этот вопрос, видит раздел "4. Не Раздражайте Честных Людей" из "Принципы Прозрачности"

7
задан xXx 21 August 2019 в 09:34
поделиться

4 ответа

Нельзя смешивать синтаксис соединения SQL-89 "таблица, таблица" с синтаксисом соединения SQL-92 "условие включения таблицы LEFT JOIN таблицы"

7
ответ дан 7 December 2019 в 01:24
поделиться

Хотя синтаксис перекрестного соединения является прямым переводом того, что вы предоставили, он может не подходить для вашей ситуации. Это связывало бы всех людей со всеми должностями, прежде чем покинуть их. таблица заработной платы. Кажется маловероятным, что вы этого хотите.

У вас действительно есть люди, которые не связаны с зарплатой? Если на то пошло, вы хотите видеть какие-либо вакансии, не связанные с зарплатой или людьми? Образцы данных и набор результатов помогут нам дать вам запрос, который сделает то, что вам действительно нужно. Я подозреваю, что одно из следующих может дать вам лучший результат:

SELECT p.Name, j.Job, s.Salary
FROM  PeopleTable p
JOIN SalaryTable s  ON s.PeopleID=p.PeopleID
RIGHT JOIN JobTable j  ON s.JobID=j.JobID

SELECT p.Name, j.Job, s.Salary
FROM  PeopleTable p
JOIN SalaryTable s  ON s.PeopleID=p.PeopleID
JOIN JobTable j  ON s.JobID=j.JobID

SELECT p.Name, j.Job, s.Salary
FROM SalaryTable s 
RIGHT JOIN PeopleTable p  ON s.PeopleID=p.PeopleID
RIGHT JOIN JobTable j  ON s.JobID=j.JobID
3
ответ дан 7 December 2019 в 01:24
поделиться

Попробуйте

SELECT p.Name, j.Job, s.Salary
FROM SalaryTable s
LEFT JOIN PeopleTable p on s.PeopleID = p.PeopleID
LEFT JOIN JobTable j ON s.JobID = j.JobID
0
ответ дан 7 December 2019 в 01:24
поделиться

Я не уверен, почему это так, но FROM PeopleTable p, JobTable j можно заменить на CROSS JOIN

SELECT p.Name, j.Job, s.Salary
FROM PeopleTable p
  CROSS JOIN JobTable j
  LEFT JOIN SalaryTable s ON s.PeopleID=p.PeopleID AND s.JobID=j.JobID

Best Regrads, Иордан

0
ответ дан 7 December 2019 в 01:24
поделиться