Info
User ID=1123456,Item ID=6685642
Bu sütun veri tabanımızda ürünlerin özelliklerini saklamak için kullanılır ve bu yüzden olduğum sürece
Info
Irrelevant ID=666,User ID=123124,AnotherIrrelevantID=1232342,Item ID=1213124
ve bu yüzden bir SQL sorgusu aşağıdaki gibi:
-- convert info column to xml type
; with cte as --imports a library of common table expressions
(
select TOP 1000 cast('<info ' + REPLACE(REPLACE(REPLACE(REPLACE(OtherInformation,' ', ''),',', '" '),'=','="'),'.','') + '" />' as XML) info, --puts the OtherInformation column into well formed XML
ROW_NUMBER() over (order by TableID) id --returns all rows??
FROM Table
WHERE TableEnum=51
)
SELECT DISTINCT UserID from --selects unique user ids from our returned xml
(
select T.N.value('local-name(.)', 'varchar(max)') as Name, --selects all attributes returned in varchar(max) format as Name
T.N.value('.', 'varchar(max)') as Value, id --Selects all values returned
from cte cross apply info.nodes('//@*') as T(N) -- from the XML we created above
) v
pivot (max(value) for Name in ([UserID])) p --creates a pivot table on Name, separating all of the attributes into different columns
yalnızca Kullanıcı kimliği ve Öğe kimliği ile ilgili, örneğin burada saklanır gereksiz bilgiler olabilir aşağıdaki gibi 0'in
Şimdi, bu doğru bana bir sütun döndürür:
UserID
1
2
3
4
5
Şimdi bir Kullanıcının yaptığı siparişleri tutan başka bir masa,
Table2
var. UserID'yi bu tabloya bir başvuru olarak kullanmak istiyorum ve bu nedenle yalnızca UserID değerini döndürmek yerine, bu tablodaki satırları döndürürüm, yukarıda döndüğüm UserID bu satırdaki satırlara eşittir.
Yani, yerine yukarıdaki, elde ederiz:
UserID Table2Col Table2Col2
2 Info Info
5 Info Info
5 Info2 Info2
5 Info3 Info3
2 soru - nasıl gerçekleştirebilir JOIN veya iki tablo birleştirmek için bir alt sorgu yap, ben doğru sözdizimi ile bunu nasıl bilemiyorum . İkincisi, yukarıdaki sorguda çalışmanın sorgusunu nasıl anladığımı gösteren bazı yorumlar yazdım. Onlar doğru mu?
Teşekkür bakın! Bu gece sınava girecek, ama bu iyi görünüyor :). Yukarıdaki yorumlar doğru mu? –
Bu cevapla gideceğim .. – MarmiK