webForumDet fria alternativet

Vägrar fungera

4 svar · 318 visningar · startad av Alpha II

Alpha IIMedlem sedan maj 20002 993 inlägg
#1

Jag experimenterar med sgtpeppers idé med olika access till olika användare (http://www.webforum.nu/showthread.php?s=&postid=720712#post720712).

Men jag får inte SQL frågan att fungera.

SELECT sum(access) as access
FROM acl
WHERE (userID='$userID' OR groupID in (SELECT groupID FROM membership WHERE userID='$userID'))
AND objID = (SELECT objID FROM objects WHERE name='$object')

Felmeddelandet:

Databas fel #1064: Invalid SQL
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT groupID FROM membership WHERE userID='49')) AND ob

SPiNMedlem sedan mars 20007 896 inlägg
#2

MySQL stöder väl fortfarande inte subselects? Troligtvis där ditt problem ligger. :)

Alpha IIMedlem sedan maj 20002 993 inlägg
#3

Det ska tydligen fungera från och med 4.1. Vilket inte mitt webhotell använder :(

Är det möjligt att skriva om frågan så att den fungerar?

Alpha IIMedlem sedan maj 20002 993 inlägg
#4

Jag installerade MySQL 5.0 nu och det fungerar fint. Men jag vill ju kunna använda min kod på mitt webbhotell. Ingen som vet hur jag ska göra? :)

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Byt DBMS ...

Så vitt jag vet går det inte att skriva om utan subselect så att man alltid får exakt samma resultat.

SELECT sum(distinct access) as access
FROM acl join objects o
on acl.objid = o.objid
left join membership m
on acl.groupid = m.groupid
and m.userID='$userID'
WHERE o.name='$object'
and acl.userid = '$userid'

är det närmaste man kan komma. Det blir olika resultat med de två olika frågorna om det finns flera grupper (med access) som har samma värde i access och som usern är medlem i.

133 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)