Здравствуйте, bedward70, Вы писали:
B>вот пример B>
B>SELECT * FROM table1 t1, (SELECT ? AS value from dual) param WHERE t1.column1 = param.value AND t1.column2 IN (SELECT t2.column2 FROM table2 t2 WHERE t2.column1 = param.value)
B>
B>Может кто знает более элегантное решение? Может что-то есть в ANSI стандарте?
Как передавать параметры в запрос зависит от SQL-сервера и используемых клиентских библиотек, стандарт это не описывает.
Для данного конкретного запроса, если Oracle не очень старый более элегантное решение будет переписать его через нормальный JOIN.
А вообще, ваше решение вполне нормальное
SELECT * FROM table1 t1 WHERE t1.column1 = ? AND t1.column2 IN (SELECT t2.column2 FROM table2 t2 WHERE t2.column1 = ?)
Причем, в оба воросика идет одно значение...
Хотелось бы обойтись одним вопросиком. Может кто знает как?
вот пример
SELECT * FROM table1 t1, (SELECT ? AS value from dual) param WHERE t1.column1 = param.value AND t1.column2 IN (SELECT t2.column2 FROM table2 t2 WHERE t2.column1 = param.value)
Может кто знает более элегантное решение? Может что-то есть в ANSI стандарте?
Здравствуйте, sunsquirel, Вы писали:
S>Джойны поддерживает любая база, так как они входят в ANSI-стандарт.
Смелое утверждение и не менее смелая аргументация
Здравствуйте, ., Вы писали: >> Хотелось бы обойтись одним вопросиком. Может кто знает как? .>В данном случае вместо второго вопросика можно подставить t1.column1
Тогда другой запрос получится: подзапрос с t2 будет коррелировать с IN (SELECT ). А "глупый" оптимизатор может не понять что t1.column1 принимает одно и тоже значение. А это чревато другим планом исполнения.
Formidable wrote:
> Тогда другой запрос получится: подзапрос с t2 будет коррелировать с IN > (SELECT ). А "глупый" оптимизатор может не понять что t1.column1 > принимает одно и тоже значение. А это чревато другим планом исполнения.
Premature optimization? А по-моему корелляция уже есть по t1.column2 IN (SELECT t2.column2... ). И вообще, не стоит априори считать оптимизатор глупым.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай