Красивый Select | |
---|---|
PaulWist Автор Сообщений: 14601 Дата регистрации: 01.04.2004 |
Ребята.
Есть такая задачка.
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Красивый Select | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Чего-то я в Selecte ничего не понял особенно Not In и вообще он с синтаксической ошибкой
Паша - поконктретней что должно делаться ------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Красивый Select | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
селект красивый и так
------------------ Осторожно - глисты! |
Re: Красивый Select | |
---|---|
PaulWist Автор Сообщений: 14601 Дата регистрации: 01.04.2004 |
Вадим.
Есть родительская таблица (Test) имеющая PK - ID, в дочерней таблице (Test1) имеющей FK ID_Test на родителя, содержатся суммы Su, также в дочерней , есть ещё одна ссылка на родителя ID_Test1, но не являющаяся FK (поддерживается через триггер) Что бы было совсем понятно, пример (реализующий эту структуру) есть сотрудники (Test.ID) привозящие деньги (Test1.Su), надо посчитать ск-ко каждый сотрудник привез денег, НО бывают ситуации когда поехавший сотрудник деньги не привез, а вместо него привез другой сотрудник (Test1.ID_Test1), в итоге для нашего примера первый сотрудник по своим заказам привез Test1.ID_Test = 1,2 Su = 1 + 1 = 2, а так же привез и за сотрудника ID = 2 ещё Su = 1 - итого 2+1 = 3, соответственно второй (Test.ID = 2) привез 1. Те первый Join - это подсчет суммы для тех кто ездил второй Join - это сумма джля тех кто привез не за себя Union - понятно обьединяем Select - тоже понятно из двух выборок получаем результат. Синтаксическая ошибка - попробуй в 9-ке (на самом деле этот тест для MSSQL) 2Hel!Riser Спасибо. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Красивый Select | |
---|---|
piva Сообщений: 18655 Откуда: Курган Дата регистрации: 24.03.2004 |
Паша, думаю, что при этих условиях красивше не напишешь - отличный запрос - только чего ты в нем такого кривого увидел ?
------------------ Часто бывает так, что есть над чем задуматься, а нечем. |
Re: Красивый Select | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Если я правильно тебя понял, то попробуй так:
Смысл в том, что если есть ненулевое значение поля test1.ID_Test1, то связку надо делать по нему, в противном случае связываемся по полю test1.id_Test. Если IIF() не проходит, то можно сформировать условие связи через несколько OR и AND (чтобы уйти от функции и выйти на возможную оптимизацию). ------------------ |
Re: Красивый Select | |
---|---|
WiRuc Сообщений: 1012 Дата регистрации: 09.04.2002 |
Для MSSQL
|
Re: Красивый Select | |
---|---|
PaulWist Автор Сообщений: 14601 Дата регистрации: 01.04.2004 |
2Владимир Максимов
Владимир, замечательно. Завтра сообщю, как прошел план выполнния, сейчас надо бежать. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Красивый Select | |
---|---|
PaulWist Автор Сообщений: 14601 Дата регистрации: 01.04.2004 |
2WiRuc
Спасибо. Не совсем то, что надо (в смысле нужно обьединение двух таблиц, а не поиск по одной, как сами понимаете приведен был только тест, а не рабочий вариант). Идея видна невооруженным взглядом и перекликается с постом Владимир Максимов. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Красивый Select | |
---|---|
PaulWist Автор Сообщений: 14601 Дата регистрации: 01.04.2004 |
2Владимир Максимов
2WiRuc Спасибо, мужики. План уменьшился в ТРИ раза, Duration больше чем в 2 раза. Люкс. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
© 2000-2024 Fox Club  |