Я работаю над приложением Laravel / Angular, и на одной из страниц у меня есть форма, отображающая таблицу с информацией о количестве учетных записей.Один из столбцов таблицы называется «Контакт», и в каждой ячейке столбца отображается имя контакта по умолчанию для этой записи таблицы.
В ячейках этого столбца также отображается кнопка «Редактировать»,при нажатии на которую открывается диалоговое окно, позволяющее пользователю добавить еще один контакт к этой записи таблицы - диалоговое окно отображает форму с полями «имя», «фамилия» и «электронная почта» и имеет кнопку «Добавить контакт».
Существует также краткий «предварительный просмотр» того, как имя должно отображаться в письме, сгенерированном для отправки этому пользователю, то есть «Привет фамилия» или «Привет имя», в зависимости от типа контакта,и используемый шаблон письма.
У меня возникли некоторые проблемы с отображением соответствующего имени, потому что я не уверен, как написать SQL-запрос, мне нужно получить соответствующее имя.
Таблицы настроены таким образом, что таблица account.account
содержит значения для:
'идентификатор учетной записи', 'имя учетной записи', идентификатор типа учетной записи ',
аи таблица account.property
содержит значения для
'идентификатор свойства', метка свойства ',' тег свойства ',' описание свойства '.
В таблице account.property
естьдве строки, которые содержат имена, которые будут использоваться для различных способов связи - одна с тегом свойства addresseename
, а другая с тегом свойства addresseenamepdf
.Я хочу отобразить эти значения в окне предварительного просмотра в диалоговом окне, но я не уверен, как написать SQL для их извлечения.
Насколько я вижу, первичного / внешнего ключа нетотношения между таблицами, но мне сказали, что они связаны с использованием View account.vAccount
.Прошло несколько лет с тех пор, как я занимался чем-то большим, чем простейшее программирование баз данных с использованием SQL, и раньше я не сталкивался с представлениями, поэтому не уверен, как использовать их в запросе ...
В MSSQL SMS, если я щелкну правой кнопкой мыши на представлении account.vAccount и выберу 1000 верхних строк, я увижу, что запрос:
SELECT TOP (1000) [accountId]
,[name]
,[typeId]
,[accountType]
,[accountTypeTag]
,[typeParentId]
,[parentAccountType]
,[parentAccountTypeName]
,[balanceDate]
, // several other values here
FROM [myDB].[account].[vAccount]
запущен, и мне представлен список результатов,который я могу отфильтровать, добавив в конец запроса предложение where
:
FROM [myDB].[account].[vAccount] where accountId = 53092;
, и это просто возвращает строку view
для этой конкретной учетной записи.Однако я не вижу столбцы addresseename
& addresseenamepdf
, данные которых я хочу извлечь из таблицы account.property
.
Мое (ограниченное) понимание SQL говорит мне, что мне нужно будет создатьсвязь между этими двумя таблицами, чтобы можно было запрашивать значения addressename
& addresseenamepdf
, которые я хочу, используя только значение accountId
(т.е. иметь внешний ключ из одной из таблиц в другой таблице).
Правильно ли мое понимание здесь, или я могу использовать view
для извлечения этих данных без создания связи между таблицами?Если бы я мог, как бы я это сделал?
- Правка -
Так что, похоже, я упустил, что эти две таблицы на самом деле связаны через третьютаблица (я только начал работать над этим приложением) - таблицы:
account
- accountID (PK)
- имя
- typeId
- ...
propertyValue
- propertyValueId (PK)
- accountId
- propertyId
- ...
property
- propertyId (PK)
- propertyLabel
- propertyTag
- ...
Таблицы имеют отношения:
account one-to-many propertyValue many-to-one свойство
Как мне написать запрос, который будет возвращать два конкретных свойства (свойства, значения которых propertyId
48
& 49
для учетной записи, где значение accountId
равно 53092
?
Имеюпопытался выполнить запрос:
SELECT TOP (1000) [accountID]
,[name
...
FROM [myDB][account].[account] where accountID = 53092
INNER JOIN [myDB].[account].[propertyValue] where propertyTag = 'ADDRESSEENAME' | propertyTag = 'ADDRESSEENAMEPDF';
но когда я пытаюсь выполнить, я получаю сообщение об ошибке:
Неверный синтаксис рядом с ключевым словом 'INNER'.
Почему я получаю это?Что я делаю не так?