sql >> Databasteknik >  >> RDS >> Sqlserver

Läs XML-data till hierarkiska tabeller

Vi kan (ab)använda ROW_NUMBER() för att generera ID:n utanför XQuery. Ingress:

WITH questions AS (
    SELECT
        ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS ID,
        n.q.value('(./questionText)[1]', 'nvarchar(max)') AS questionText,
        n.q.value('(./result)[1]', 'nvarchar(50)') AS result,
        n.q.query('answer') AS answers
    FROM
        @xml.nodes('/quizresult/question') AS n (q)
), questions_and_answers AS (
    SELECT ID, questionText, result, answer.query('.') AS answer
    FROM questions
    CROSS APPLY answers.nodes('answer') AS a(answer)
)

Och hämta nu frågorna med

SELECT ID, questionText, result 
FROM questions

Och svaren med

SELECT ID AS questionID,
    q.answer.value('answer[1]', 'nvarchar(max)') AS answer,
    q.answer.value('answer[1]/@number', 'int') AS number,
    q.answer.value('answer[1]/@value', 'int') AS val,
    q.answer.value('answer[1]/@chosen', 'bit') AS chosen
FROM questions_and_answers AS q


  1. JDBC VS Hibernate

  2. EF Core - Tabell '*.__EFMigrationsHistory' existerar inte

  3. Det går inte att infoga post i SQLite Database från Firebase Message Service när appen är i bakgrunden eller är stängt

  4. XAMPP/MySQL:kunde inte öppna tabellutrymmesfilen för en tabell .\mysql\innodb_index_stats.ibd efter omstart av MySQL