Конференция "Базы" » Вопрос по SQL [D7, MSSQL]
 
  • Anatoly Podgoretsky © (20.03.12 12:00) [20]
    > nikefest  (20.03.2012 11:36:19)  [19]

    Как Травкин связан с Сидоров?
  • nikefest (20.03.12 12:40) [21]

    > Как Травкин связан с Сидоров?

    только командой.
  • Anatoly Podgoretsky © (20.03.12 12:42) [22]
    Надо ли спрашивать какой и DDL
  • nikefest (20.03.12 12:43) [23]

    > select P, NULL as P1, P2  into #R from T left join t2 on
    > t2.PT=t.P
    >
    > update #R set P1 = t1.P1 from #R join T1 on t1.PT=#R.P
    >
    > insert into #r
    > select PT, t1.P1, NULL AS P2
    > from t1 where P1 not in (select P1 from #R where #R.P=T1.
    > PT)
    >
    > select * from #R
    >
    > drop table #R

    Спасибо большое, Знайка. Этот код работает :)
    Я пытался колупаться с искуственным айдишником и заполнять таблицу через курсоры. По-моему проще некуда :)
  • Кщд (20.03.12 14:53) [24]
    >nikefest   (20.03.12 12:43) [23]
    последний раз.
    ответьте себе на вопрос, почему так:
    Команда           Ушли      Пришли
    "Дуболомы"    Сидоров    Травкин
    "Дуболомы"    Дубов       Null

    а не так:
    Команда           Ушли      Пришли
    "Дуболомы"    Сидоров    Null
    "Дуболомы"    Дубов       Травкин

    и вместо того, чтобы бестолково "колупаться с искуственным айдишником и заполнять таблицу через курсоры", почитайте хоть что-нибудь по SQL - например, "Understanding SQL"
  • nikefest (20.03.12 16:29) [25]

    > ответьте себе на вопрос, почему так:
    > Команда           Ушли      Пришли
    > "Дуболомы"    Сидоров    Травкин
    > "Дуболомы"    Дубов       Null
    >
    > а не так:
    > Команда           Ушли      Пришли
    > "Дуболомы"    Сидоров    Null
    > "Дуболомы"    Дубов       Травкин

    Да что ж вы такой непонятливый
    Отвечаю последний раз на ВАШ вопрос: Никакой разницы нет!!!!. Второй вариант тоже допустим. Главное чтобы Травкин два раза не появлялся.
    Вы наверное прочитали все про SQL, поэтому задаете один и тот же вопрос по нескольку раз, вместо того чтобы попытаться решить задачку
  • Германн © (20.03.12 16:48) [26]

    >
    > Да что ж вы такой непонятливый
    > Отвечаю последний раз на ВАШ вопрос: Никакой разницы нет!
    > !!!. Второй вариант тоже допустим. Главное чтобы Травкин
    > два раза не появлялся.

    Так почему бы тогда не получать результат двумя разными кусками
    1.
    Команда           Ушли    
    "Дуболомы"    Сидоров  
    "Дуболомы"    Дубов      

    2.
    Команда        Пришли
    "Дуболомы"    Травкин

    ???
  • nikefest (20.03.12 17:42) [27]

    > Так почему бы тогда не получать результат двумя разными
    > кусками
    > 1.
    > Команда           Ушли    
    > "Дуболомы"    Сидоров  
    > "Дуболомы"    Дубов      
    >
    > 2.
    > Команда        Пришли
    > "Дуболомы"    Травкин

    Ну, а дальше? нужна ведь одна таблица для отображения, а не две
  • Германн © (20.03.12 17:49) [28]

    > Ну, а дальше? нужна ведь одна таблица для отображения, а
    > не две

    А понял. Нет бога, кроме TDBGrid :)
  • Кщд (21.03.12 08:02) [29]
    >nikefest   (20.03.12 11:36) [19]
    1. задачу сформулировать не в состоянии;
    2. знаний и желания их получить ровно ноль;
    3. к советам, данным в этой ветке неоднократно и разными пользователями, прислушаться желания нет.

    вывод неутешителен: бессменный капитан команды "Дуболомы")
  • Кщд (21.03.12 08:02) [30]
    ах, да:


    with t as (
             select 1 p from dual
             union all
             select 2 from dual          
             union all
             select 3 from dual
             union all
             select 4 from dual
             
             ),
        t1 as (
             select t1.pt, t1.p1,
                    row_number() over (partition by t1.pt order by t1.p1) rn
             from
                 (    
                 select 111 p1, 1 pt from dual
                 union all
                 select 112, 1 from dual
                 union all
                 select 113, 1 from dual
                 union all
                 select 141, 4 from dual              
                 ) t1
              ),
        t2 as (
             select t2.pt, t2.p2,
                    row_number() over (partition by t2.pt order by t2.p2) rn
             from
                 (          
                 select 211 p2, 1 pt from dual
                 union all
                 select 221, 2 from dual
                 union all
                 select 222, 2 from dual
                 union all
                 select 241, 4 from dual              
                 ) t2
              )          
    select t.p, m.p1, m.p2
    from t t    
          left join (
                    select coalesce(t1.pt, t2.pt) pt, t1.p1 p1, t2.p2 p2
                    from t1 t1
                           full join t2 t2
                             on t1.pt = t2.pt
                                and t1.rn = t2.rn
                    ) m
            on t.p = m.pt
    order by t.p        

  • Anatoly Podgoretsky © (21.03.12 08:15) [31]
    Он замучается это переводить на MS SQL
  • Inovet © (21.03.12 10:47) [32]
    > [25] nikefest   (20.03.12 16:29)
    > Отвечаю последний раз на ВАШ вопрос: Никакой разницы нет!
    > !!!. Второй вариант тоже допустим. Главное чтобы Травкин
    > два раза не появлялся.

    Ты занят ерундой и запутыванием пользователя, а начал с запутывания себя. Похожий вид в отчётах иногда делается просто как вариант печати в 2, 3, N колонок с разными заголовками. Но БЕЗ связи их. В твоём случае будет как-то так

    Команда "Дуболомы"

    Ушли       Пришли    В наличии
    Сидоров    Травкин   Козлов
    Дубов                Быков
                        Баранов

    Команда "Лесопилы"
    Ушли          Пришли     В наличии
    Князь         Синий      Кокс
    Паша Северный Выдра      Жарый
                 Бульдозер  Шпала
  • Кщд (21.03.12 11:07) [33]
    >Inovet ©   (21.03.12 10:47) [32]
    оставьте, это бесполезно - он не понимает
  • nikefest (21.03.12 11:13) [34]
    Удалено модератором
  • nikefest (21.03.12 11:19) [35]

    > Ты занят ерундой и запутыванием пользователя, а начал с
    > запутывания себя. Похожий вид в отчётах иногда делается
    > просто как вариант печати в 2, 3, N колонок с разными заголовками.
    >  Но БЕЗ связи их. В твоём случае будет как-то так

    Это не отчет. Это экранная форма, в которой нужно дальше манипулировать данными - типа групировок и промежуточных итогов.
    Поверте, все варианты просто отобразить такую информацию уже реализованы. Просто нужен еще вот такой замороченный вариант
  • Inovet © (21.03.12 11:26) [36]
    > [35] nikefest   (21.03.12 11:19)
    > Просто нужен еще вот такой замороченный вариант

    Просто, когда хотят странного, возникают подозрения в неправильной реализации. Нормальным было бы отобразить 1 мастер и 2 детейла. Ну может зачем-то и так криво надо, не знаю.
  • nikefest (21.03.12 11:41) [37]

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

    Да это понятно, и уже сделано, причем в двух вариантах. Это финансы и вот им нужно еще "как в экселе".
  • Кщд (21.03.12 12:04) [38]
    >nikefest   (21.03.12 11:13) [34]
    >Кщд   (21.03.12 08:02) [30]
    клиника...
 
Конференция "Базы" » Вопрос по SQL [D7, MSSQL]
Есть новые Нет новых   [134431   +10][b:0][p:0.003]