webForumDet fria alternativet

SQL-fråga

6 svar · 363 visningar · startad av jockooono

jockooonoMedlem sedan mars 200561 inlägg
#1

Jag försöker göra en funktion där man ska kunna kryssa för vilka dokument ett visst företag ska ha tillgång till. Det finns ett antal rubriker och till varje rubrik ett antal dokument (se bifogad bild). I tabellen Comp_File spara jag de dokument företaget ska ha tillgång till genom att spara företags id:t (CompanyID) och dokument id:t (FileID). SQL-frågan nedan fungerar när man inte behöver ta hänsyn till vilket företag det är men så fort jag försöker lägga till ett "WHERE CompanyID= 2" så får jag det inte att fungera. Jag vill ju att alla rubriker och dokument ska synas med endast det som är sparade ska var ikryssade. Hur kan jag lösa detta?

SELECT fc.CategoryID, fc.Categoryname, f.FileID, f.Filename, Comp_File.FileID, Comp_File.CompanyID
FROM (FileCategories AS fc INNER JOIN Files AS f ON fc.CategoryID = f.CategoryID) LEFT JOIN Comp_File ON f.FileID = Comp_File.FileID
ORDER BY fc.Categoryname, f.Filename
<input type="checkbox" <%If RS("Comp_File.FileID") =  RS("f.FileID") Then Response.Write("checked")%>>
meny.gif
Jesper TMedlem sedan nov. 20017 144 inlägg
#2

LEFT JOIN ?

jockooonoMedlem sedan mars 200561 inlägg
#3

Om det var så här du menade Jesper T så får jag endast med de dokument som är sparade på företaget, jag vill att alla dokument i en kategori ska synas.

SELECT fc.CategoryID, fc.Categoryname, f.FileID, f.Filename, Comp_File.FileID, Comp_File.CompanyID
FROM (FileCategories AS fc LEFT JOIN Files AS f ON fc.CategoryID = f.CategoryID) LEFT JOIN Comp_File ON f.FileID = Comp_File.FileID
WHERE Comp_File.CompanyID=1
ORDER BY fc.Categoryname, f.Filename
Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Och om du tar bort: WHERE Comp_File.CompanyID=1
och lägger till: LEFT JOIN Comp_File ON f.FileID = Comp_File.FileID AND Comp_File.CompanyID=1
Vad händer då, då?

jockooonoMedlem sedan mars 200561 inlägg
#5

Får felmeddelande "Kopplingsuttrycket stöds inte" som hänvisar till "AND Comp_File.CompanyID=1". Tack för de snabba svaren!

SELECT fc.CategoryID, fc.Categoryname, f.FileID, f.Filename, Comp_File.FileID, Comp_File.CompanyID
FROM (FileCategories AS fc LEFT JOIN Files AS f ON fc.CategoryID = f.CategoryID) LEFT JOIN Comp_File ON f.FileID = Comp_File.FileID AND Comp_File.CompanyID=1
ORDER BY fc.Categoryname, f.Filename
LarsGMedlem sedan dec. 200012 464 inlägg
#6
ON (f.FileID = Comp_File.FileID 
  AND Comp_File.CompanyID=1)
jockooonoMedlem sedan mars 200561 inlägg
#7

Stort tack hjälpen uppskattas verkligen, nu fungerad den delen fint.

SELECT fc.CategoryID, fc.Categoryname, f.FileID, f.Filename, Comp_File.FileID, Comp_File.CompanyID
FROM (FileCategories AS fc INNER JOIN Files AS f ON fc.CategoryID = f.CategoryID) LEFT JOIN Comp_File ON (f.FileID = Comp_File.FileID AND Comp_File.CompanyID=1)
ORDER BY fc.Categoryname, f.Filename

Nu har jag en fråga till, jag spara även de kategorier som man kryssat för i tabellen Comp_Cat med företags id:t (CompanyID) och Kategori id:t (CatID). Jag skulle vilja att även dessa plockas ut i samma fråga på samma sätt som dokumenten som är sparade till ett företag nu gör. För som det är nu så om man kryssa för en hel kategori och klickar på spara så nästa gång man går in på det företaget så är alla dokument i kategorin ikryssade men inte själva kategorin (se bifogade bilden). Lite svårt att förklara... Hur fasen skulle den SQL-frågan se ut.

meny.gif
135 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
133 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)