Re: Where exists... + Union
enbart SQL:n skrev:
' ## SELECT NAVIGATION PER MENU
SELECT n.intID, n.strName, 'TRUE', m.intID, m.strName, a.intID, u.intID
FROM navigation n, navigationMenu m, access a, users u
WHERE EXISTS
(SELECT a.intID, u.intID, n.intID, m.intID FROM access a, users u, navigation n, navigationMenu m
WHERE u.intID = " & request("ID") & " AND u.intID = a.intUserID AND a.intNavigationID = n.intID AND n.intMenuID = m.intID )
UNION
SELECT n.intID, n.strName, 'FALSE', m.intID, m.strName, a.intID, u.intID
FROM navigation n, navigationMenu m, access a, users u
WHERE NOT EXISTS
(SELECT a.intID, u.intID, n.intID, m.intID FROM access a, users u, navigation n, navigationMenu m
WHERE u.intID = " & request("ID") & " AND u.intID = a.intUserID AND
a.intNavigationID = n.intID AND n.intMenuID = m.intID );
Ska det röda &:et vara där?
Jag tycker det ser skumt ut, det borde bli syntaxfel???
Du har:
....
(SELECT a.intID, u.intID, n.intID, m.intID FROM ....
UNION
SELECT n.intID, n.strName, 'FALSE', m.intID, m.strName, a.intID, u.intID FROM ...
I den översta Selectsatsen plockar du ut 4 attribut att slå ihop med 7 attribut nedan! Eftersom en union slår ihop tabellerna på "höjden" borde det inte funka alls om du inte har lika många kolumner i bägge uttrycken och dessutom att kolumnerna har samma typ.
Sedan är det inte konstigt om det går segt. Dina joiner, som du har flera av, är mycket stora, dessutom har du många mängdoperationer, vilka tar mycket resurser.
