Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выборка одного и того же поля с разными условиями


Страницы:   1 2

Роман ©   (2010-08-17 10:25:00) 

Подскажите как наиболее продуктивно вывести(в одной строке) значения поля(1) но с разными условиями-в первом случае где значение поля(2)=1, во втором значение поля(2)=5. Спасибо.


Германн   (2010-08-17 20:25:00) [1]


> Плохиш ©   (17.08.10 20:12) [26]

Начиналось то все на sql.ru, а уж потом переплыло на ДМ. К вечеру добралось и до Королевства. :)


Плохиш   (2010-08-17 20:12:00) [2]

А я так и не понял, делфи-то тут каким боком?


Роман   (2010-08-17 16:32:00) [3]

t1, t2,t3(одно множество)
t11,t12,t13(второе множество)
and t1.f1=t11.f1(объединяю)
как то по другому можно


Роман   (2010-08-17 16:30:00) [4]

select t1.f1,t1.f2,t11.f2
from t1, t2,t3,
\\копии таблиц t1,t2,t3\\t11,t12,t13
where t1.f1=t2.f1
and t2.f2=t3.f2
and t2.f3=1
and t11.f1=t12.f1
and t12.f2=t13.f2
and t12.f3=5
and t1.f1=t11.f1
результат такой:t1.f1,t1.f2,t11.f2
медленно выполняется-подскажите альтернативу

делаю самообъединение двух виртуальных таблиц где в одной все значения с 1
в другой с 5 что не понятно.........
как мне увеличить производительность запроса можете сказать


Dennis I. Komarov   (2010-08-17 16:09:00) [5]


> Роман   (17.08.10 14:54) [18]
> Реальная ...


А можно узнать, на кой такое в реале понадобилось?
О чую я сдесь X,Y,Z...


Германн   (2010-08-17 15:34:00) [6]


> Мне нужно где  f2=1 и f2=5 и то и то

f2 не может одновременно быть равна и 1 и 5.


Sergey13   (2010-08-17 15:34:00) [7]

> [20] Роман   (17.08.10 15:29)

> Мне нужно где  f2=1 и f2=5 и то и то

А у меня что? F2 может быть или 1 или 5. И 1 и 5 поле быть одновременно не может.

Сформулируй задачу еще раз. Нормально, с примерами данных. При этом помни, что никто в глаза твоей реальной задачи не видел.


Роман   (2010-08-17 15:29:00) [8]

where f2=1 or f2=5

Мне нужно где  f2=1 и f2=5 и то и то


Sergey13   (2010-08-17 15:24:00) [9]

> [18] Роман   (17.08.10 14:54)
> причем тут мин мах

Выведет в строку 2 разных значения одного поля.


Роман   (2010-08-17 14:54:00) [10]

Реальная причем тут мин мах


Sergey13   (2010-08-17 14:36:00) [11]

> [16] Роман   (17.08.10 14:27)

Это задачка из тестов каких то или реальная задача?
select min(f1),max(f1)
from t
where f2=1 or f2=5


Роман   (2010-08-17 14:27:00) [12]

для каждого  f1 существует только два значения f3 либо 1 либо 5 и два значения f2 которые нужно вывести в одну строку.


Sergey13   (2010-08-17 13:28:00) [13]

> [4] Роман   (17.08.10 11:01)
> Необходимо все сделать на сервере.
Вроде у оракла в последних версиях был какой то оператор типа LIST или что-то вроде этого. Хотя возможно и путаю что-то.

На крайний случай в Оракле помимо SQL еще и PLSQL есть.
А на "чистом" SQL это ИМХО нормально не решается, т.к. ничего не сказано про соответствие значений поля(2) и поля(1). Т.е. поле2=5 может соответсвовать бесчисленной множество вариантов выводимого поля1. Обратного я в условиях вроде не нашел.
Да и условий может быть больше.


12   (2010-08-17 12:56:00) [14]


> Роман   (17.08.10 12:53) [12]

:)

4/ индексы навесить


12   (2010-08-17 12:55:00) [15]


> Роман   (17.08.10 12:44) [11]


> and f3=1
and f3=5

не будет так работать
какая таблица?

1/приведи реальный запрос свой
2/или данные, исходные и желаемые
3/используй join


Роман   (2010-08-17 12:53:00) [16]

select t1.f1,t1.f2,t11.f2
from t1, t2,t3,
\\копии таблиц t1,t2,t3\\t11,t12,t13
where t1.f1=t2.f1
and t2.f2=t3.f2
and t2.f3=1
and t11.f1=t12.f1
and t12.f2=t13.f2
and t12.f3=5
and t1.f1=t11.f1
результат такой:t1.f1,t1.f2,t11.f2
медленно выполняется-подскажите альтернативу


Роман   (2010-08-17 12:44:00) [17]

select t1.f1,t1.f2,t11.f2
from t1, t2,t3,
\\копии таблиц t1,t2,t3\\t11,t12,t13
where t1.f1=t2.f1
and t2.f2=t3.f2
and f3=1
and t11.f1=t12.f1
and t12.f2=t13.f2
and f3=5
and t1.f1=t11.f1
результат такой: медленно выполняется-подскажите альтернативу
t1.f1,t1.f2,t11.f2


12   (2010-08-17 12:01:00) [18]

может как-то так?
select
поле1, поле2,
case
 When поле1=1 then 'ничего не понял'
 When поле1=5 then 'не понял ничего'  
 Else 'а пойдем спасать тех, которые пошли спасать тех, которые пошли спасать тех,которые пошли спасать тех,которые пошли спасать тех,которые не вернулись?'
end as RSL
from


Роман   (2010-08-17 11:58:00) [19]

Делал так как \ 12\ но выполняется долго два прохода по всей таблице(плюс связки)


Роман   (2010-08-17 11:56:00) [20]

Связка трех таблиц по джойну   где поле1,поле2 принадлежат одной из трех таблиц получаем две строки в которых поле1=1 в первой строке и поле1=5 во второй строке. Необходимо выводить одну строку где значение поля2 выводиться в этой строке два раза -1раз где поле1=1 и 2раз где поле2=5


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо