Конференция "Начинающим" » Выборка одного и того же поля с разными условиями
 
  • Роман (17.08.10 10:25) [0]
    Подскажите как наиболее продуктивно вывести(в одной строке) значения поля(1) но с разными условиями-в первом случае где значение поля(2)=1, во втором значение поля(2)=5. Спасибо.
  • Sergey13 © (17.08.10 10:38) [1]
    select поле(1)
    from table_name
    where поле(2)=1 or поле(2)=5
  • Роман (17.08.10 10:39) [2]
    Значение поля(1) должно быть выведено в одной строке как значения двух полей но сразными условиями.В одну строку и со значением =1 и со значением =5
  • Sergey13 © (17.08.10 10:53) [3]
    > [2] Роман   (17.08.10 10:39)

    Никто не мешает на клиенте разворачивать результат как заблагорассудится.
    Можно и серер БД (если есть) напрягать этим, но правильнее, ИМХО, все таки на клиенте.
  • Роман (17.08.10 11:01) [4]
    Никакого клиента нет. Необходимо все сделать на сервере.
    Уточняю условие:запрос выбирает из таблицы две строки они отличаются полями f1 и f2 . Мне необходимо вывести в одной строке значения f1 где f2=1 и f1 где f2=5.
  • Игорь Шевченко © (17.08.10 11:46) [5]
    Сервер как всегда Парадокс
  • 12 © (17.08.10 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
  • Игорь Шевченко © (17.08.10 11:54) [7]
  • Роман (17.08.10 11:56) [8]
    Связка трех таблиц по джойну   где поле1,поле2 принадлежат одной из трех таблиц получаем две строки в которых поле1=1 в первой строке и поле1=5 во второй строке. Необходимо выводить одну строку где значение поля2 выводиться в этой строке два раза -1раз где поле1=1 и 2раз где поле2=5
  • Роман (17.08.10 11:58) [9]
    Делал так как \ 12\ но выполняется долго два прохода по всей таблице(плюс связки)
  • 12 © (17.08.10 12:01) [10]
    может как-то так?
    select
    поле1, поле2,
    case
     When поле1=1 then 'ничего не понял'
     When поле1=5 then 'не понял ничего'  
     Else 'а пойдем спасать тех, которые пошли спасать тех, которые пошли спасать тех,которые пошли спасать тех,которые пошли спасать тех,которые не вернулись?'
    end as RSL
    from
  • Роман (17.08.10 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
  • Роман (17.08.10 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 © (17.08.10 12:55) [13]

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


    > and f3=1
    and f3=5

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

    1/приведи реальный запрос свой
    2/или данные, исходные и желаемые
    3/используй join
  • 12 © (17.08.10 12:56) [14]

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

    :)

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

    На крайний случай в Оракле помимо SQL еще и PLSQL есть.
    А на "чистом" SQL это ИМХО нормально не решается, т.к. ничего не сказано про соответствие значений поля(2) и поля(1). Т.е. поле2=5 может соответсвовать бесчисленной множество вариантов выводимого поля1. Обратного я в условиях вроде не нашел.
    Да и условий может быть больше.
  • Роман (17.08.10 14:27) [16]
    для каждого  f1 существует только два значения f3 либо 1 либо 5 и два значения f2 которые нужно вывести в одну строку.
  • Sergey13 © (17.08.10 14:36) [17]
    > [16] Роман   (17.08.10 14:27)

    Это задачка из тестов каких то или реальная задача?
    select min(f1),max(f1)
    from t
    where f2=1 or f2=5
  • Роман (17.08.10 14:54) [18]
    Реальная причем тут мин мах
  • Sergey13 © (17.08.10 15:24) [19]
    > [18] Роман   (17.08.10 14:54)
    > причем тут мин мах

    Выведет в строку 2 разных значения одного поля.
  • Роман (17.08.10 15:29) [20]
    where f2=1 or f2=5

    Мне нужно где  f2=1 и f2=5 и то и то
  • Sergey13 © (17.08.10 15:34) [21]
    > [20] Роман   (17.08.10 15:29)

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

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

    Сформулируй задачу еще раз. Нормально, с примерами данных. При этом помни, что никто в глаза твоей реальной задачи не видел.
  • Германн © (17.08.10 15:34) [22]

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

    f2 не может одновременно быть равна и 1 и 5.
  • Dennis I. Komarov © (17.08.10 16:09) [23]

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


    А можно узнать, на кой такое в реале понадобилось?
    О чую я сдесь X,Y,Z...
  • Роман (17.08.10 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 что не понятно.........
    как мне увеличить производительность запроса можете сказать
  • Роман (17.08.10 16:32) [25]
    t1, t2,t3(одно множество)
    t11,t12,t13(второе множество)
    and t1.f1=t11.f1(объединяю)
    как то по другому можно
  • Плохиш © (17.08.10 20:12) [26]
    А я так и не понял, делфи-то тут каким боком?
  • Германн © (17.08.10 20:25) [27]

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

    Начиналось то все на sql.ru, а уж потом переплыло на ДМ. К вечеру добралось и до Королевства. :)
 
Конференция "Начинающим" » Выборка одного и того же поля с разными условиями
Есть новые Нет новых   [134433   +25][b:0][p:0.001]