Har någon nått tips hur jag kan snabba upp detta /slippa loop i loop .. ?
går det att joina en o sama tabell ?
Dim SQL_01
SQL_01 = "SELECT displayName, distinguishedName FROM Users ORDER BY DisplayName"
Dim oRS_01
Set oRS_01 = dbconn.Execute(SQL_01)
If oRS_01.EOF Or oRS_01.BOF Then
Else
Dim oRS_02
Do Until oRS_01.EOF
Response.Write(""& oRS_01("displayName") &"-------")
Set oRS_02 = dbconn.Execute("SELECT displayname FROM Users WHERE Manager = '"&oRS_01("distinguishedName")&"'")
If oRS_02.EOF Or oRS_02.BOF Then
Response.Write("<br>")
Else
Response.Write("Manager for<br>")
End if
oRS_01.MoveNext
Loop
End if
oRS_02.Close
oRS_01.Close
Set oRS_02 = Nothing
Set oRS_01 = Nothing
Fattar inte riktigt vad du vill göra, men testa något sådant hära kanske:
sql= "SELECT a.displayName FROM Users a " &_
"LEFT JOIN users b ON b.Manager=a.distinguishedName " &_
"ORDER BY b.Manager,a.DisplayName"
Set rs = Connection.execute(sql)
Dim displayname
Do While not rs.eof
if rs("displayName")<>displayname then
displayname = rs("displayName")
Response.Write "<b>Manager for: " & displayname & "</b><br>"
Else
Response.Write rs("displayName") & "<br>"
End if
rs.movenext
Loop
detta returnerar alla som är manager.
Men jag skulle även vilja visa dem som inte är...
om ni förstår jvad jag menar
Med detta får jag ut de på poster som jag vill markera för att de har users som har distinguishedname som manager.
Det är ju bra. Men så vill jag få fram resten också.
SELECT displayName, Manager, distinguishedname FROM Users
WHERE distinguishedName IN (SELECT manager FROM USers)
ORDER BY DisplayName
Skall du ha med alla poster så skall du nog köra med left join. I och för sig så tycker nog jag att det är fel databasstruktur.
Du borde skapa en tablell med magagers och ett relationsid i tabellen users.
hej... Nej har byggt upp en ad-cache (sql db)... Vi har så många applikationer som kan ställa "dumma" frågor mot ad:t Kanske e det hel fel. Men nu blev det så iaf.
guid sparas som en hex sträng i sql.. relationen med manager görs genom distinguishedname / manager..
SELECT a.displayName, a.manager FROM Users a
LEFT JOIN users b ON b.Manager=a.distinguishedName
ORDER BY a.DisplayName
Denna träffar ju rätt som det ser ut... Det man skell vilja göra är att lägga till en "GROUP BY" och en "variabel" som typ "ismanager ='yes'" som man sedan kan använda med recordsettet
Tipsar om AS, har använt det för att märka upp fält för att kunna skilja dem åt, som du också verkar vilja göra? Har inget exempel, eftersom det var länge sedan.
För att underlätta för oss, posta gärna det resultat du får med din fråga, och hur du vill att det ska se ut.
japp AS skall jag kolla på . tror du förstår vad jag menar.
Jag wskall försöka förklara lite bättre. Vet inte heller om "identifiera " rätt uttryck.
en tabell som heter 'Users'
3 st kolumner som heter displayName, Manager, distinguishedName
Om någon har en manager så läggs managerns distinguishedname in i manager kolumnen för den posten.
Om jag vill lista ut alla och markera att de är manager. Ex. Martin - Manager for
Om de inte har några poster "under sig" så skall det bara stå Martin - Menig
Jag kan inte göra det själv, men har sett sql:er med Case-satser som direkt sätter tex 0/1 beroende på vad något är, tex det du frågar om.
Annars kan du ju lösa det sedan, om posten har ett värde i distinguishedname, skriv ut rätt text, annars skriver du ut en annan text.
Men, jag är rätt säker på att det kan fixas direkt i recordsetet.
Något i stil med denna om n kan förstå vad jag menar..
Nu funkar ju inte denna utan jag bara försöker visa...
DECLARE @ManagerFor varchar
SELECT A.displayname, A.manager, A.distinguishedname, A.Manager, (@Managerfor = 'YES') FROM Users AS A
INNER JOIN Users AS B ON B.Manager = A.distinguishedname
ORDER BY A.displayName DESC
GROUP BY
SELECT A.displayname, A.manager, A.distinguishedname, A.Manager
ORDER BY A.displayName DESC
Jag fattar inte vad frågan / problemet är, eftersom du säger att du får ut rätt saker med SQL-frågan ovan. Men, generellt, sätt alias på fälten med as, så kan du i koden ta reda på vilket fält som härstammar från vilken instans av tabellen users.
SELECT a.displayName, a.manager, [b]b.displayname as något_annat[/b] FROM Users a
INNER JOIN users b ON b.Manager=a.distinguishedName
ORDER BY a.DisplayName
edit: detta inlägg skrevs innan martins senaste ramlade in. Nu blev jag ännu mer förbryllad över vad som efterfrågas. ;)
Jag måste nog öva på kommunikationen eller läsa en sql-bok. :)
Men ok. Jag provar en sista gång.
"SKAPA EN temporär kolumn"(fiktiv)
SELECT A.displayname, A.manager, A.distinguishedname, A.Manager, >A.temoprär kollumn<
FROM Users AS A
INNER JOIN Users AS B ON B.Manager = A.distinguishedname
ORDER BY A.displayName DESC
'Temporär kollumn = "yes"
GROUP BY ' FÖR ATT SLÅ IHOP Alla poster och kunna skilja ut mangers från meniga
SELECT A.displayname, A.manager, A.distinguishedname, A.Manager
ORDER BY A.displayName DESC
'Temporär kollumn = "no"
rörigt ? :) nja lite
321 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e