Присоединяйтесь к 2 оракулам - PullRequest
0 голосов
/ 17 октября 2019

кто-то, помогите присоединиться к следующим запросам.

Я старался изо всех сил, но не смог присоединиться к условию.

PLN_ID - это общий столбец в обеих таблицах.

Запрос 1-

SELECT PLN_ID
     , ASSORTMENT_GROUP
     , STORE
     , PLANOGRAM
     , STATUS 
  FROM ACN_PLANOGRAMS 
 WHERE PLANOGRAM not like '%<Untitled>%'
     ;

Запрос 2

    SELECT distinct(PLN_ID)
         , count(*)
         , (sum(WIDTH))      AS width
      FROM ACN_FIXEL 
     WHERE type='0'
  GROUP BY PLN_ID
    HAVING count(*) > 1
         ;

Ответы [ 3 ]

1 голос
/ 17 октября 2019

Есть несколько способов решить эту проблему. Без понимания вашей модели данных или бизнес-логики я предлагаю простейшее решение - производную таблицу (встроенное представление):

SELECT p.PLN_ID
     , p.ASSORTMENT_GROUP
     , p.STORE
     , p.PLANOGRAM
     , p.STATUS 
     , f.fixel_count
     , f.fixel_width
  FROM ACN_PLANOGRAMS p
       inner join (SELECT PLN_ID
                          , count(*) as fixel_count
                          , (sum(WIDTH))      AS fixel_width
                    FROM ACN_FIXEL 
                    WHERE type='0'
                    GROUP BY PLN_ID
                    HAVING count(*) > 1 ) f 
       on f.pln_id = p.pln_id
 WHERE p.PLANOGRAM not like '%<Untitled>%'
     ;  

Это решение возвращает результаты только для PLN_ID в обоих наборах результатов. Если у вас другая логика, вам может понадобиться использовать LEFT OUTER JOIN.

1 голос
/ 17 октября 2019

Пожалуйста, внесите изменения присоединиться, что вы хотите, чтобы вы. Попробуйте этот запрос:

    SELECT 
        DISTINCT(a.PLN_ID),
        (SUM(a.WIDTH)) AS width,
        b.PLN_ID,
        b.ASSORTMENT_GROUP,
        b.STORE,
        b.PLANOGRAM,
        b.STATUS 
    FROM 
        ACN_FIXEL a 
    INNER JOIN 
        ACN_PLANOGRAMS b ON a.PLN_ID = b.PLN_ID
    WHERE 
        a.type = '0' 
        AND b.PLANOGRAM NOT LIKE '%<Untitled>%'
    GROUP BY 
        a.PLN_ID,
b.PLN_ID,
        b.ASSORTMENT_GROUP,
        b.STORE,
        b.PLANOGRAM,
        b.STATUS
    HAVING 
        COUNT(*) > 1
0 голосов
/ 17 октября 2019

Сделать Query 2 подзапросом:

    SELECT ap.PLN_ID
         , ap.ASSORTMENT_GROUP
         , ap.STORE
         , ap.PLANOGRAM
         , ap.STATUS
         , sq.cnt
         , sq.width 
      FROM ACN_PLANOGRAMS  ap
      JOIN (
                  SELECT PLN_ID
                       , count(*)          AS cnt
                       , sum(WIDTH)        AS width
                    FROM ACN_FIXEL 
                   WHERE type='0'
                GROUP BY PLN_ID
                  HAVING count(*) > 1
           ) sq
        ON ( sq.PLN_ID = ap.PLN_ID )
     WHERE ap.PLANOGRAM not like '%<Untitled>%'
         ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...