Hallo,
ich ein Problem bei einer SELECT-Anweisung, die UNION bentutzt.
Ich bentutze Delphi 4 C/S mit InterBase 5.6.
Die SQL-Anweisung sieht folgendermaßen aus:
<pre>
SELECT USERS.USERS, ARCHIVES.ARCHIVES, USERS.USERS_NAME, USERS.USERS_SUPERVISOR, ARCHIVES_PATH.ARCHIVES_PATH_NAME, ARCHIVES.ARCHIVES_FOLDER_NAME, ARCHIVES.ARCHIVES_NAME
FROM ((USERS INNER JOIN SYS_OBJECTRIGHTS ON USERS.USERS = SYS_OBJECTRIGHTS.OBR_USR_ID) INNER JOIN ARCHIVES ON SYS_OBJECTRIGHTS.OBR_INSTANCE = ARCHIVES.ARCHIVES) INNER JOIN ARCHIVES_PATH ON ARCHIVES.ARCHIVES_PATH = ARCHIVES_PATH.ARCHIVES_PATH
WHERE (((SYS_OBJECTRIGHTS.OBR_GRANTED)=1) AND ((SYS_OBJECTRIGHTS.OBR_OBJ_ID)=2) AND USER=:USER)
UNION
SELECT GROUPS_USERS.USERS, ARCHIVES.ARCHIVES, USERS.USERS_NAME, USERS.USERS_SUPERVISOR, ARCHIVES_PATH.ARCHIVES_PATH_NAME, ARCHIVES.ARCHIVES_FOLDER_NAME, ARCHIVES.ARCHIVES_NAME
FROM USERS INNER JOIN (GROUPS_USERS INNER JOIN ((SYS_OBJECTRIGHTS INNER JOIN ARCHIVES ON SYS_OBJECTRIGHTS.OBR_INSTANCE = ARCHIVES.ARCHIVES) INNER JOIN ARCHIVES_PATH ON ARCHIVES.ARCHIVES_PATH = ARCHIVES_PATH.ARCHIVES_PATH) ON GROUPS_USERS.GROUPS = SYS_OBJECTRIGHTS.OBR_GRP_ID) ON USERS.USERS = GROUPS_USERS.USERS
WHERE (((SYS_OBJECTRIGHTS.OBR_GRANTED)=1) AND ((SYS_OBJECTRIGHTS.OBR_OBJ_ID)=2) AND USER=:USER)
ORDER BY 7
</pre>
Leider akzeptiert die IBQuery diesen Befehl nicht, obwohl er im SQL-Explorer anstandslos ausgeführt werden kann.
Ich erhalte immer die Fehlermelung:
<b>count of column list and variable list do not match</b>
Ich wäre für jede Hilfestellung dankbar.
MfG
Steffen
ich ein Problem bei einer SELECT-Anweisung, die UNION bentutzt.
Ich bentutze Delphi 4 C/S mit InterBase 5.6.
Die SQL-Anweisung sieht folgendermaßen aus:
<pre>
SELECT USERS.USERS, ARCHIVES.ARCHIVES, USERS.USERS_NAME, USERS.USERS_SUPERVISOR, ARCHIVES_PATH.ARCHIVES_PATH_NAME, ARCHIVES.ARCHIVES_FOLDER_NAME, ARCHIVES.ARCHIVES_NAME
FROM ((USERS INNER JOIN SYS_OBJECTRIGHTS ON USERS.USERS = SYS_OBJECTRIGHTS.OBR_USR_ID) INNER JOIN ARCHIVES ON SYS_OBJECTRIGHTS.OBR_INSTANCE = ARCHIVES.ARCHIVES) INNER JOIN ARCHIVES_PATH ON ARCHIVES.ARCHIVES_PATH = ARCHIVES_PATH.ARCHIVES_PATH
WHERE (((SYS_OBJECTRIGHTS.OBR_GRANTED)=1) AND ((SYS_OBJECTRIGHTS.OBR_OBJ_ID)=2) AND USER=:USER)
UNION
SELECT GROUPS_USERS.USERS, ARCHIVES.ARCHIVES, USERS.USERS_NAME, USERS.USERS_SUPERVISOR, ARCHIVES_PATH.ARCHIVES_PATH_NAME, ARCHIVES.ARCHIVES_FOLDER_NAME, ARCHIVES.ARCHIVES_NAME
FROM USERS INNER JOIN (GROUPS_USERS INNER JOIN ((SYS_OBJECTRIGHTS INNER JOIN ARCHIVES ON SYS_OBJECTRIGHTS.OBR_INSTANCE = ARCHIVES.ARCHIVES) INNER JOIN ARCHIVES_PATH ON ARCHIVES.ARCHIVES_PATH = ARCHIVES_PATH.ARCHIVES_PATH) ON GROUPS_USERS.GROUPS = SYS_OBJECTRIGHTS.OBR_GRP_ID) ON USERS.USERS = GROUPS_USERS.USERS
WHERE (((SYS_OBJECTRIGHTS.OBR_GRANTED)=1) AND ((SYS_OBJECTRIGHTS.OBR_OBJ_ID)=2) AND USER=:USER)
ORDER BY 7
</pre>
Leider akzeptiert die IBQuery diesen Befehl nicht, obwohl er im SQL-Explorer anstandslos ausgeführt werden kann.
Ich erhalte immer die Fehlermelung:
<b>count of column list and variable list do not match</b>
Ich wäre für jede Hilfestellung dankbar.
MfG
Steffen
Comment