Форум: "Начинающим";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];
ВнизВыборка одного и того же поля с разными условиями Найти похожие ветки
← →
Роман (2010-08-17 10:25) [0]Подскажите как наиболее продуктивно вывести(в одной строке) значения поля(1) но с разными условиями-в первом случае где значение поля(2)=1, во втором значение поля(2)=5. Спасибо.
← →
Sergey13 © (2010-08-17 10:38) [1]select поле(1)
from table_name
where поле(2)=1 or поле(2)=5
← →
Роман (2010-08-17 10:39) [2]Значение поля(1) должно быть выведено в одной строке как значения двух полей но сразными условиями.В одну строку и со значением =1 и со значением =5
← →
Sergey13 © (2010-08-17 10:53) [3]> [2] Роман (17.08.10 10:39)
Никто не мешает на клиенте разворачивать результат как заблагорассудится.
Можно и серер БД (если есть) напрягать этим, но правильнее, ИМХО, все таки на клиенте.
← →
Роман (2010-08-17 11:01) [4]Никакого клиента нет. Необходимо все сделать на сервере.
Уточняю условие:запрос выбирает из таблицы две строки они отличаются полями f1 и f2 . Мне необходимо вывести в одной строке значения f1 где f2=1 и f1 где f2=5.
← →
Игорь Шевченко © (2010-08-17 11:46) [5]Сервер как всегда Парадокс
← →
12 © (2010-08-17 11:51) [6]select A.One, B.Two
from
(
select поле(1) as One, 1 as JN1
from table_name
where поле(2)=1
) A
join B on A.JN1 = B.JN2
(
select поле(1) as Two, 1 as JN2
from table_name
поле(2)=5
) B
← →
Игорь Шевченко © (2010-08-17 11:54) [7]нет, не Парадокс
http://sql.ru/forum/actualthread.aspx?tid=782216
← →
Роман (2010-08-17 11:56) [8]Связка трех таблиц по джойну где поле1,поле2 принадлежат одной из трех таблиц получаем две строки в которых поле1=1 в первой строке и поле1=5 во второй строке. Необходимо выводить одну строку где значение поля2 выводиться в этой строке два раза -1раз где поле1=1 и 2раз где поле2=5
← →
Роман (2010-08-17 11:58) [9]Делал так как \ 12\ но выполняется долго два прохода по всей таблице(плюс связки)
← →
12 © (2010-08-17 12:01) [10]может как-то так?
select
поле1, поле2,
case
When поле1=1 then "ничего не понял"
When поле1=5 then "не понял ничего"
Else "а пойдем спасать тех, которые пошли спасать тех, которые пошли спасать тех,которые пошли спасать тех,которые пошли спасать тех,которые не вернулись?"
end as RSL
from
← →
Роман (2010-08-17 12:44) [11]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
← →
Роман (2010-08-17 12:53) [12]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
медленно выполняется-подскажите альтернативу
← →
12 © (2010-08-17 12:55) [13]
> Роман (17.08.10 12:44) [11]
> and f3=1
and f3=5
не будет так работать
какая таблица?
1/приведи реальный запрос свой
2/или данные, исходные и желаемые
3/используй join
← →
12 © (2010-08-17 12:56) [14]
> Роман (17.08.10 12:53) [12]
:)
4/ индексы навесить
← →
Sergey13 © (2010-08-17 13:28) [15]> [4] Роман (17.08.10 11:01)
> Необходимо все сделать на сервере.
Вроде у оракла в последних версиях был какой то оператор типа LIST или что-то вроде этого. Хотя возможно и путаю что-то.
На крайний случай в Оракле помимо SQL еще и PLSQL есть.
А на "чистом" SQL это ИМХО нормально не решается, т.к. ничего не сказано про соответствие значений поля(2) и поля(1). Т.е. поле2=5 может соответсвовать бесчисленной множество вариантов выводимого поля1. Обратного я в условиях вроде не нашел.
Да и условий может быть больше.
← →
Роман (2010-08-17 14:27) [16]для каждого f1 существует только два значения f3 либо 1 либо 5 и два значения f2 которые нужно вывести в одну строку.
← →
Sergey13 © (2010-08-17 14:36) [17]> [16] Роман (17.08.10 14:27)
Это задачка из тестов каких то или реальная задача?
select min(f1),max(f1)
from t
where f2=1 or f2=5
← →
Роман (2010-08-17 14:54) [18]Реальная причем тут мин мах
← →
Sergey13 © (2010-08-17 15:24) [19]> [18] Роман (17.08.10 14:54)
> причем тут мин мах
Выведет в строку 2 разных значения одного поля.
← →
Роман (2010-08-17 15:29) [20]where f2=1 or f2=5
Мне нужно где f2=1 и f2=5 и то и то
← →
Sergey13 © (2010-08-17 15:34) [21]> [20] Роман (17.08.10 15:29)
> Мне нужно где f2=1 и f2=5 и то и то
А у меня что? F2 может быть или 1 или 5. И 1 и 5 поле быть одновременно не может.
Сформулируй задачу еще раз. Нормально, с примерами данных. При этом помни, что никто в глаза твоей реальной задачи не видел.
← →
Германн © (2010-08-17 15:34) [22]
> Мне нужно где f2=1 и f2=5 и то и то
f2 не может одновременно быть равна и 1 и 5.
← →
Dennis I. Komarov © (2010-08-17 16:09) [23]
> Роман (17.08.10 14:54) [18]
> Реальная ...
А можно узнать, на кой такое в реале понадобилось?
О чую я сдесь X,Y,Z...
← →
Роман (2010-08-17 16:30) [24]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 что не понятно.........
как мне увеличить производительность запроса можете сказать
← →
Роман (2010-08-17 16:32) [25]t1, t2,t3(одно множество)
t11,t12,t13(второе множество)
and t1.f1=t11.f1(объединяю)
как то по другому можно
← →
Плохиш © (2010-08-17 20:12) [26]А я так и не понял, делфи-то тут каким боком?
← →
Германн © (2010-08-17 20:25) [27]
> Плохиш © (17.08.10 20:12) [26]
Начиналось то все на sql.ru, а уж потом переплыло на ДМ. К вечеру добралось и до Королевства. :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.003 c