>La tabella PRC_MOVEMENT contiene 2 foreign key verso la tabella
>INI_WAREHOUSE_MAP. Se io faccio la join come sopra non funziona
>il sistema di notifica perchè, da quello che ho capito, per permetterla
>non ti puoi riferire alla stessa entità due volte.
ci si può riferire ad una entità tutte le volte che vuoi, diciamo che fatta così rischi che se in un caso il legame non si verifica, non torni alcun record.
In questi casi devi pensare alle OUTER JOIN (left, right).
Solo che vorrei capire cosa intendi tu per notifica.. Dai per scontato che sia chiaro, ma per te una notifica è generata in base al fatto che esista almeno un record?
>Non capisco però come mai non digerisca l'istruzione IF e la funzione nel WHERE posta come condizione.
Credo ci siano due errori di sintassi:
ALTER PROCEDURE [dbo].[P_NOTIFY_MOVEMENTS] (@AREA_ID INT, @STATUS BIT)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
--SET NOCOUNT ON;
IF @STATUS=1
BEGIN
SELECT
MOV.AREA_CODE
, MOV.MOVEMENT_NUMBER
, MOV.MOVEMENT_TYPE
, MOV.PRIORITY
, MOV.MOVEMENT_STATUS
, WM.STATION_ID
, WM2.STATION_ID
FROM
dbo.INI_WAREHOUSE_MAP AS WM
JOIN dbo.PRC_MOVEMENT AS MOV ON WM.CELL_ID = MOV.CELL_ID_FROM
JOIN dbo.INI_WAREHOUSE_MAP AS WM2 ON MOV.CELL_ID_TO = WM2.CELL_ID
WHERE
MOV.AREA_CODE = @AREA_ID AND
MOV.MOVEMENT_TYPE = 1
-- manca l'operatore logico! AND? OR?
-- DBO.F_TEST_STATUS_BYTE(DBO.PRC_MOVEMENT.MOVEMENT_STATUS ) = 0
END
-- manca un END della stored, quello prima è l'END della IF
-- qui ci vuole questo: END
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi