Jag har tidigare fuskat och har hafr frågan-i-frågan varianten. Man ställer en SQL fråga, loopar den och ställer en ytterligare fråga innuti den. Det är en fungerande men osnygg lösning.
Hur gör jag för att ställa frågan bara en gång?
Jag har kollat lite efter detta men jag vet inte riktigt vad jag ska leta efter...
Jag har tre tabeller. [competence], [competenceX] och [users].
[competence] - namn på olika kompetenser.
x_ID
x_name
x_sortfield - nummerordning
x_view - visa / visa inte
[competenceX] - vem av användarna som besitter vilken kompetens. (Skitdumt namn!! I brist på bättre vetande...)
x_ID
x_competenceID
x_userID
[users] - inte mycket att orda om.
*** Vad jag vill åstakomma.
Jag vill lista alla poster från [competence] en gång. Om användaren i fråga har just den kompetensen så blir det TRUE, annars FALSE.
Are you with!?
***
Detta går idag att åstakomma via en-fråga-i-frågan, jag skulle gärna villja åstakomma det med endast en fråga.
select c.x_name, u.name, 'Ja' as Kompetens
from competence c, users u
where exists
(select * from competenceX where x_userId = u.id and x_competenceId = c.id)
union
select c.x_name, u.name, 'Nej'
from competence c, users u
where not exists
(select * from competenceX where x_userId = u.id and x_competenceId = c.id)
Jag kan tillägga att jag kör Access och jag fattar inte din kod helt och hållet, men med lite trixande kanske man kan få det att fungera i alla fall...
Eclipse, jag är övertygad om att vi tillsammans skulle kunna få detta att fungera... ;)
Jag har förstås inte hela problembilden klar för mig! Jag vet inte om du i Access har möjlighet att testköra min SQL-sats direkt mot databasen och se vad du får för resultat - utan kringliggande kod?! Jag har ju bara lagt till en kolumn där det står Ja eller Nej beroende om kombinationen Användare - Kompetens existerar eller ej! SQL-frågan var bara tänkt som en hjälp för att komma vidare. Den behöver sannolikt kompletteras med nå'n "order by" och/eller nå'n "distinct" kanske och en del ASP-kod, eller nå't, för att nå dit du vill...
Kom igen med mer fakta så fixar vi det nog (du och jag eller nå'n annan på WF)!!
SQL = "SELECT u.x_ID, u.x_firstname, u.x_lastname, u.x_company FROM users u " _
& " WHERE u.x_view = TRUE AND u.x_customer = TRUE "
& " UNION (SELECT f.x_ID, f.x_name FROM fromStaffToCustomer f WHERE f.x_ID = " & request("ID") _
& " AND f.x_customerID = u.x_ID);"
Öööh! :q Jag ser inte sambandet mellan SQL--frågan i ditt senaste inlägg och det problem du från början presenterade... så härmed släpper jag mitt engagemang i denna tråd!!
Det är samma projekt, samma typ av problem fast på en annan sida med färre poster inblandade.
I min ursprungliga fråga är det tre tabeller inblandade, i denna är det två tabeller, men fortfarande samma problem.
[b]TMP = "SELECT * FROM [fromStaffToCustomer] WHERE [x_jobID] = " & request("ID") & " AND [x_customerID] =" & myGetRow(0,j) & ";"[/b]
set myTMP = Conn.Execute(TMP)
on error resume next
[b]IF myTMP.EOF THEN
x_view = "<A HREF=""confirm.asp?order_true=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
& "<IMG SRC=""/admin/pics/icons/false.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Lägg till leverantör""></A>"
ELSE
x_view = "<A HREF=""confirm.asp?order_false=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
& "<IMG SRC=""/admin/pics/icons/true.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Ta bort leverantör""></A>"
x_mail = x_mail & "<IMG SRC=""/admin/pics/icons/mail.gif"" WIDTH=""11"" HEIGHT=""16""> " & vbCRLF
END IF[/b]
...
[b] ' ## X_VIEW
IF request("ID") = "" THEN
response.write "<TD WIDTH=""30"" CLASS=""button"" HEIGHT=""15""> </TD>" & vbCRLF
ELSE
response.write "<TD WIDTH=""30"" CLASS=""button"" HEIGHT=""15"">" & x_view & "</TD>" & vbCRLF
END IF[/b]
Här har jag ställt en fråga-i-fråga. Koden här illusterar hur jag frågar efter en post och beroende på det skriver kod till sidan. Jag gör en fråga-i-frågan och Frågar efter poster som inte finns... vilket är namnet på tråden.
Beklagar mina dåliga talager att i skrift uttrycka ett problem!
Här kommer ett nytt förslag utifrån ditt "fett med kod"-inlägg.
Betänk att jag inte kan asp nå't vidare... :p . De delarna har jag bara kopierat från din kod!!
SQL = "SELECT u.x_ID, u.x_firstname, u.x_lastname, u.x_company, 1
FROM users u
WHERE u.x_view = TRUE
AND u.x_customer = TRUE
AND EXISTS (
SELECT *
from fromStaffToCustomer
where x_jobID = " & request("ID") & "
and x_customerID = u.x_ID)
UNION
SQL = "SELECT u.x_ID, u.x_firstname, u.x_lastname, u.x_company, 0
FROM users u
WHERE u.x_view = TRUE
AND u.x_customer = TRUE
AND NOT EXISTS (
SELECT *
from fromStaffToCustomer
where x_jobID = " & request("ID") & "
and x_customerID = u.x_ID)"
set mySQL = Conn.Execute(SQL)
on error resume next
myGetRow = mySQL.GetRows()
IF IsArray(myGetRow) THEN
FOR j = 0 to UBound(myGetRow, 2)
IF myGetRow(4, j) = 0 THEN
x_view = "<A HREF=""confirm.asp?order_true=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
& "<IMG SRC=""/admin/pics/icons/false.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Lägg till leverantör""></A>"
ELSE
x_view = "<A HREF=""confirm.asp?order_false=" & myGetRow(0, j) & "&ID=" & request("ID") & """>" _
& "<IMG SRC=""/admin/pics/icons/true.gif"" WIDTH=""20"" HEIGHT=""16"" BORDER=""0"" TITLE=""Ta bort leverantör""></A>"
x_mail = x_mail & "<IMG SRC=""/admin/pics/icons/mail.gif"" WIDTH=""11"" HEIGHT=""16""> " & vbCRLF
END IF
.
.
etc
NEXT
END IF
135 ms totalt · 3 externa anrop · v20260731065814-full.9823c0c5