Столбцы с именем
Ниже приведены условия, при которых столбцы наборов строк с соответствующим именем сопоставляются с итоговым XML-документом с учетом регистра:
- имя столбца начинается с символа @ ;
- Имя столбца не начинается с знака ( @ ).
- Имя столбца не начинается с знака ( @ ) и содержит знак косой черты ( / ).
- несколько столбцов имеют одинаковый префикс;
- один из столбцов имеет другое имя.
Имя столбца начинается с знака ( @ )
Если имя столбца начинается с знака ( @ ) и не содержит знак косой черты ( / ), создается атрибут row элемента с соответствующим значением столбца. Например, следующий запрос возвращает набор строк с двумя столбцами ( @PmId, Name ). В результирующем XML PmId атрибут добавляется в соответствующий row элемент, а для него назначается значение ProductModelID .
SELECT ProductModelID as "@PmId", Name FROM Production.ProductModel WHERE ProductModelID = 7 FOR XML PATH;
HL Touring Frame
Атрибуты должны поступать до любых других типов узлов, таких как узлы элементов и текстовые узлы, на том же уровне. Следующий запрос возвращает ошибку:
SELECT Name, ProductModelID as "@PmId" FROM Production.ProductModel WHERE ProductModelID = 7 FOR XML PATH;
Имя столбца не начинается с знака ( @ )
Если имя столбца не начинается с знака ( @ ), не является одним из тестов узла XPath и не содержит знак косой черты ( / ), xml-элемент, который является подэлементом элемента строки, row по умолчанию создается.
В результате следующего запроса указывается имя столбца. Дочерний элемент result добавляется к элементу row .
SELECT 2 + 2 as result for xml PATH;
Следующий запрос задает имя столбца для XML, ManuWorkCenterInformation возвращаемого XQuery для Instructions столбца типа XML . Элемент ManuWorkCenterInformation добавляется в качестве дочернего к элементу row .
SELECT ProductModelID, Name, Instructions.query( 'declare namespace MI="http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelManuInstructions"; /MI:root/MI:Location ') as ManuWorkCenterInformation FROM Production.ProductModel WHERE ProductModelID=7 FOR XML PATH;
7 HL Touring Frame .
Имя столбца не начинается с знака ( @ ) и содержит знак косой черты ( / )
Если имя столбца не начинается с знака (), но содержит знак косой черты ( @ / ), имя столбца указывает иерархию XML. Например, если имя столбца — «Name1/Name2/Name3. /Namen«, каждоеимя i представляет имя элемента, вложенное в текущий элемент строки (для i = 1) или под элементом с именем i-1. Если имяn начинается с @ , оно сопоставляется с атрибутом элемента Namen-1 .
Например, следующий запрос возвращает идентификатор сотрудника и имя, представленные в виде сложного элемента EmpName , содержащего First Middle имя и Last имя.
SELECT EmployeeID "@EmpID", FirstName "EmpName/First", MiddleName "EmpName/Middle", LastName "EmpName/Last" FROM HumanResources.Employee E, Person.Contact C WHERE E.EmployeeID = C.ContactID AND E.EmployeeID = 1 FOR XML PATH;
Имена столбцов используются в качестве пути при построении XML-документа в режиме PATH. Имя столбца, содержащее значения идентификатора сотрудника, начинается с «@». Поэтому атрибут EmpID добавляется в row элемент. Все остальные столбцы включают знак косой черты ( / ) в имени столбца, указывающего иерархию. В итоговом XML-документе будет присутствовать дочерний элемент EmpName внутри элемента row , а элемент EmpName будет, в свою очередь, содержать дочерние элементы First , Middle и Last .
Gustavo Achong
Отчество работника имеет значение NULL, которое по умолчанию сопоставляется с отсутствием элемента или атрибута. Если необходимо сформировать элементы для значений NULL, укажите директиву ELEMENTS с ключевым словом XSINIL, как показано в данном запросе.
SELECT EmployeeID "@EmpID", FirstName "EmpName/First", MiddleName "EmpName/Middle", LastName "EmpName/Last" FROM HumanResources.Employee E, Person.Contact C WHERE E.EmployeeID = C.ContactID AND E.EmployeeID = 1 FOR XML PATH, ELEMENTS XSINIL;
Gustavo Achong
По умолчанию в режиме PATH формируется элементно-ориентированный XML-документ. Поэтому указание директивы ELEMENTS в режиме PATH не имеет никакого смысла. Однако как показано в предыдущем примере, директива ELEMENTS с ключевым словом XSINIL может быть полезна при формировании элементов для значений NULL.
Следующий запрос кроме идентификатора и имени возвращает еще и адрес работника. В соответствии с путем, указанным в именах столбцов адресов, дочерний элемент Address добавляется к элементу row , а подробные сведения об адресе добавляются в качестве дочерних элементов к элементу Address .
SELECT EmployeeID "@EmpID", FirstName "EmpName/First", MiddleName "EmpName/Middle", LastName "EmpName/Last", AddressLine1 "Address/AddrLine1", AddressLine2 "Address/AddrLIne2", City "Address/City" FROM HumanResources.Employee E, Person.Contact C, Person.Address A WHERE E.EmployeeID = C.ContactID AND E.AddressID = A.AddressID AND E.EmployeeID = 1 FOR XML PATH;
Gustavo Achong 7726 Driftwood Drive Monroe
Несколько столбцов используют один и тот же префикс пути
Если несколько последующих столбцов имеют одинаковый префикс пути, они группируются по одному имени. Если используются разные префиксы пространства имен, даже если они привязаны к одному пространству имен, то путь считается другим. В предыдущем запросе FirstName MiddleName столбцы и LastName столбцы имеют одинаковый EmpName префикс. Поэтому они добавляются в качестве дочерних EmpName элементов. Это справедливо также для случая создания элемента Address , показанного в предыдущем примере.
Один столбец имеет другое имя
Если между столбцами встречается столбец с другим именем, группирование будет нарушено, как это показано в следующем измененном запросе. Запрос разбивает группирование FirstName , MiddleName и LastName , как указано в предыдущем запросе, путем добавления столбцов адресов между FirstName столбцами и MiddleName столбцами.
SELECT EmployeeID "@EmpID", FirstName "EmpName/First", AddressLine1 "Address/AddrLine1", AddressLine2 "Address/AddrLIne2", City "Address/City", MiddleName "EmpName/Middle", LastName "EmpName/Last" FROM HumanResources.EmployeeAddress E, Person.Contact C, Person.Address A WHERE E.EmployeeID = C.ContactID AND E.AddressID = A.AddressID AND E.EmployeeID = 1 FOR XML PATH;
В результате запрос создает два элемента EmpName . Первый элемент EmpName имеет дочерний элемент FirstName , а второй элемент EmpName имеет дочерние элементы MiddleName и LastName .
Gustavo 7726 Driftwood Drive Monroe Achong
См. также
Как назвать колонку в sql


Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Как задать название столбца при выводе результата запроса
Вывести список всех офисов, отсортированный по разности между
фактическим и плановым объемами продаж в порядке убывания.
1 2 3
select office, sales-target from OFFICES order by sales-target DESC
в результате выводит (отсутствует имя столбца) для значений sales-target.
а я хочу например сам задать название столбца. как это сделать?
Изображения
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как вывести массив при выводе результата запроса
Здравствуйте.Ситуация следующая: запрос объединяет результат нескольких других запросов,чем создает.

В чем ошибка при выводе двух целых чисел,нахождения результата их деления и выводом результата на экран?
решил вывести с клавиатуры два целых числа,написал программу как написано в учебнике Фаронова В.В.
Добавить название столбца в соседнюю ячейку от результата
Добрый день! Нужно добавить название столбца в соседнюю ячейку от минимального/максимального.
Регистрация: 28.10.2009
Сообщений: 34
1 2 3
select office, sales-target as 'Название' from OFFICES order by sales-target DESC
все додумался)))
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как задать стиль при выводе всех прифилей?
Как задать стиль мне нужно ленту с аватарками поднять на верх но при вводе топ они все.

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

Как идентифицировать кнопку при выводе запроса, php, mysqli
Добрый день, есть запрос из базы данных $result = $mysqli->query("SELECT `gpid` FROM `groupid`.
Как правильно именовать таблицы, столбцы в базе данных?
Всем привет. Изучаю базы данных, установил MySQL, создал БД. Вопрос — как правильно именовать БД, таблицы, столбцы в базе данных? В ЯП есть правила именования переменных, методов и т.д., а в БД есть такие правила, рекомендации. Гугл выдает разные варианты. Почему спрашиваю, а) чтобы самому потом не запутаться, б) чтобы комп не ругался, не очень хочется потом все переписывать, лучше сразу делать правильно. Например, как правильно назвать столбец: «name column» или «name_column» или «NameColumn» и т.д. Если правил нет, то как вы товарисщи называете эти сущности?
Все спасибо за конструктивные ответы.
- Вопрос задан более трёх лет назад
- 26634 просмотра
