Come sempre, ci sarà una spiegazione ragionevole per la mia sorpresa, ma fino a quel momento ....sql studio dell'amministrazione Server 2008 non controllando la sintassi della mia interrogazione
ho questa query
delete from Photo where hs_id in (select hs_id from HotelSupplier where id = 142)
che esegue perfettamente (più tardi ho scoperto che l'intero tavolo fotografico era vuoto)
ma la cosa strana: non c'è campo hs_id
in HotelSupplier, si chiama hs_key
!
Così, quando eseguo l'ultima parte
select hs_id from HotelSupplier where id = 142
separatamente (selezionare la parte della query con il mouse e premere F5), ottengo un errore, ma quando lo uso nella clausola in
, si non lo fa!
Mi chiedo se questo è un comportamento normale?
+1 - Volevo solo indicare esplicitamente una buona pratica nell'esempio, inclusi i nomi delle tabelle per ciascuna colonna (in due parti identificatori) nell'intera query. Buone pratiche in generale, pratica inestimabile nelle dichiarazioni di cancellazione! –
Grazie, non lo sapevo. Però è strano, però, che (anche nella tua versione semplificata) il notn-esistente 'seleziona Photo.hs_id' non generi un errore – Michel
@Michel - Non è inesistente. Viene trattata come una query secondaria correlata e valutata per ogni riga utilizzando il valore passato dalla query esterna. –