Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1281070402
@!!ex
2010-08-06 08:53
2010.11.14
Как определить географические координаты на плоской карте?


2-1281961993
12
2010-08-16 16:33
2010.11.14
как AnsiUpperCase для одного символа на русском?


2-1282306183
подмастерье
2010-08-20 16:09
2010.11.14
Создание своей формы


2-1282022380
12
2010-08-17 09:19
2010.11.14
Как писать запросы к таблицам dbf


2-1281704590
Axel54
2010-08-13 17:03
2010.11.14
Запись инфомации по помещению в БД





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский