Selekce ID z vazební tabulky   zodpovězená otázka

SQL, Databáze

Zdravím,

mám tabulky Destinace a Ulice, jsou v relaci MxN, takže vazební tabulka vypadá nějak takto

Destinace_ID|Ulice_ID

1 5

2 5

1 3

1 1

Na výstupu potřebuji získat Destinace_ID pro které znám Ulice_ID. V tomhle případě by byl výstup 1 pro 5,3,1.

Snažím se zjistit destinaci, které odpovídá určitý počet ulic abych nevkládal do DB něco co už tam je.

Zkoušel jsem už všechno možné, ale pokažde ztroskotám na tom, když přidám do dotazu více ulic, potřeboval bych něco jako:

Ulice_ID in (5,3,1) 

ale aby to platilo pro každý prvek množiny.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Že by to šlo nějak takhle?

SELECT Destinace_ID
  FROM Destinace
 WHERE NOT EXISTS (SELECT NULL 
		     FROM Ulice LEFT OUTER JOIN 
			  (SELECT Ulice_ID 
                             FROM Destinace_Ulice
                            WHERE Destinace_Ulice.Destinace_ID = Destinace.Destinace_ID) Sub
	 	       ON Sub.Ulice_ID = Ulice.Ulice_ID
		    WHERE Ulice.Ulice_ID IN (5,3,1)
		      AND Sub.Ulice_ID IS NULL)
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zatím to řeším nějak takhle:

select D.Id from Destinations as D, UI_StreetDestination as SD, UI_StreetDestination as SD1, UI_StreetDestination as SD2, RoadDestination as RD where D.FK_RegionCode=@p0 and D.FK_TownShipCode=@p1 and D.FK_TownCode=@p2 and D.FK_TownDistrictCode=@p3 and D.Id=SD.Destinations_Id and SD.UI_Street_StreetCode=@p4 and SD.Destinations_Id=SD1.Destinations_Id and SD1.UI_Street_StreetCode=@p5 and SD2.Destinations_Id=SD2.Destinations_Id and SD2.UI_Street_StreetCode=@p6 and D.Id=RD.Destinations_Id and RD.Roads_Id=@p7

Ta tabulka Destinace ma ještě další vazbu MxN do tabulky Roads, takže je to ve výsledku ještě komplikovanější.

Jdu pochopit Vaše řešení, vypadá elegantněji i co se týče dynamického generování dotazu, tak by to ve Vašem případě bylo jednodušší.

Díky za odpověď.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback