Nieoczekiwane wyjście bazy danych podczas używania INNER JOIN
Mam następujące zapytanie SQL
SELECT
r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID,
ra.BEZEICHNUNG AS raumBEZEICHNUNG, ra.ID AS raumID
FROM
RAUM r
INNER JOIN RAZUORDNUNG rz ON rz.RAUM_ID = r.ID
INNER JOIN RAUMATTRIBUTE ra ON rz.RAUMATTRIBUTE_ID = ra.ID
WHERE
RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID)
AND STADT_ID = ISNULL(@Stadt_ID, STADT_ID)
AND GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID)
AND REGION_ID = ISNULL(@Region_ID, REGION_ID)
AND RAUMATTRIBUTE_ID = ISNULL(@Raumattribute_ID, RAUMATTRIBUTE_ID)
Ale myślę, że coś z tym jest nie tak.
Na przykład:
Jeśli to zrobięthree
wRAUMKLASSE_ID
textfield w przeglądarce i wywołuje moją metodę zwraca tylko jeden pokój. Ale jest sześć pokoi o takim identyfikatorze. Dziwną rzeczą jest to, że jeśli usunę te dwieINNER JOIN
i druga linia mojejSELECT
, lubię to:
SELECT
r.BEZEICHNUNG AS BEZEICHNUNG, r.ID AS ID
FROM
RAUM r
WHERE
RAUMKLASSE_ID = ISNULL(@Raumklasse_ID, RAUMKLASSE_ID)
AND STADT_ID = ISNULL(@Stadt_ID, STADT_ID)
AND GEBAEUDE_ID = ISNULL(@Gebaeude_ID, GEBAEUDE_ID)
AND REGION_ID = ISNULL(@Region_ID, REGION_ID)
AND RAUMATTRIBUTE_ID = ISNULL(@Raumattribute_ID, RAUMATTRIBUTE_ID)
zwraca sześć pokoi, co jest poprawne. Nie wiem, jaki jest problem z moim zapytaniem. Może ktoś może mi w tym pomóc?
Z góry dziękuję