2013-11-14 4 views
-1

Как объединить эти два запроса в 1? Оба используют две разные базы данных, но все они находятся на одном сервере. Я бы использовал суб-выбор или объединение здесь?MySQL несколько запросов из нескольких баз данных

Я в основном хотел бы что-то вроде, чтобы отобразить следующее:

User name | Total A | Total B 
jon   5   3 
tim   4   2 
sarah   3   1 

Вот запросы:

Первый запрос:

SELECT 
    U.USR_USERNAME AS `User Name`, 
    COUNT(rp_workflow.PIG.APP_UID) AS 'Total A' 
FROM 
    rp_workflow.PMT_INSP_GRID PIG 
    JOIN 
    rp_workflow.PMT_INSP_NORMAL PIN 
    ON PIG.APP_UID = PIN.APP_UID 
    JOIN 
    wf_workflow.USERS U 
    ON PIN.USR_UID_ORDER = U.USR_UID 
GROUP BY 
U.USR_USERNAME 

Второй запрос:

SELECT 
    U.USR_USERNAME AS `User Name`, 
    COUNT(rp_workflow.PIQG.APP_UID) AS 'Total B' 
FROM 
    rp_workflow.PMT_INSP_QC_GRID PIQG 
    JOIN 
    rp_workflow.PMT_INSP_NORMAL PIN 
    ON PIQG.APP_UID = PIN.APP_UID 
    JOIN 
    wf_workflow.USERS U 
    ON PIN.USR_UID_QC = U.USR_UID 
    WHERE 
    PIN.APP_STATUS = 'Completed' 
GROUP BY 
U.USR_USERNAME 

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

SELECT 
    U.USR_USERNAME AS `User Name`, 
    COUNT(rp_workflow.PIG.APP_UID) AS 'Total A', 
    (SELECT 
    COUNT(rp_workflow.PIQG.APP_UID) 
    FROM 
     rp_workflow.PMT_INSP_QC_GRID PIQG 
    JOIN 
    rp_workflow.PMT_INSP_NORMAL PIN 
    ON PIQG.APP_UID = PIN.APP_UID 
    JOIN 
    wf_workflow.USERS U 
    ON PIN.USR_UID_QC = U.USR_UID 
    WHERE 
    PIN.APP_STATUS = 'Completed') AS 'Total B' 
FROM 
    rp_workflow.PMT_INSP_GRID PIG 
    JOIN 
    rp_workflow.PMT_INSP_NORMAL PIN 
    ON PIG.APP_UID = PIN.APP_UID 
    JOIN 
    wf_workflow.USERS U 
    ON PIN.USR_UID_ORDER = U.USR_UID 
GROUP BY 
U.USR_USERNAME 

Что отображается:

User name | Total A | Total B 
jon   5   6 

Edit 2: * В USR_UID нет в таблицах PIG или PIQG поэтому они должны быть присоединены к таблицам PIN. Оттуда, имя пользователя может быть получен

попробовал этот запрос, но в конечном итоге получить неизвестную ошибку колонки:

SELECT wf_workflow.U.USR_USERNAME AS `User Name` , 

     (SELECT count(PIG.APP_UID) 
     FROM rp_workflow.PMT_INSP_GRID PIG 
     JOIN rp_workflow.PMT_INSP_NORMAL PIN ON PIG.APP_UID = PIN.APP_UID 
     AND PIN.USR_UID_ORDER = U.USR_UID) AS 'Total A', 

     (SELECT count(PIQG.APP_UID) 
     FROM rp_workflow.PMT_INSP_QC_GRID PIQG 
     JOIN rp_workflow.PMT_INSP_NORMAL PIN2 ON PIQG.APP_UID = PIN2.APP_UID 
     AND PIN2.USR_UID_ORDER = wf_workflow.U.USR_UID 
     WHERE PIN2.APP_STATUS = 'Completed') AS 'Total B' 
    FROM wf_workflow.USERS U 
+0

Попробуйте поместить имя базы данных непосредственно перед именем таблицы, как это. - '[Db Name]. [Имя таблицы]' –

+0

@MikeBrant Я попробовал подзапрос, но он отобразил только сумму всех значений для второго запроса. см. первый пост – justWired

ответ

0

Попробуйте

SELECT username, 
     SUM(CASE WHEN source = 1 THEN total END) total_a, 
     SUM(CASE WHEN source = 2 THEN total END) total_b 
    FROM 
(
    SELECT 1 source, 
      u.usr_username username, 
      COUNT(pig.app_uid) total 
     FROM rp_workflow.pmt_insp_grid pig JOIN rp_workflow.pmt_insp_normal pin 
     ON pig.app_uid = pin.app_uid JOIN wf_workflow.users u 
     ON pin.usr_uid_order = u.usr_uid 
    GROUP BY u.usr_username 
    UNION ALL 
    SELECT 2 source, 
      u.usr_username username, 
      COUNT(piqg.app_uid) total 
     FROM rp_workflow.pmt_insp_qc_grid piqg JOIN rp_workflow.pmt_insp_normal pin 
     ON piqg.app_uid = pin.app_uid JOIN wf_workflow.users u 
     ON pin.usr_uid_qc = u.usr_uid 
     WHERE pin.app_status = 'Completed' 
    GROUP BY u.usr_username 
) q 
GROUP BY username 
+0

Я заменяю «источник» фактическими именами баз данных? два отдельных db: «rp_workflow» и «wf_workflow» – justWired

+0

Нет, вы не должны этого делать. 'source' - это просто псевдоним для введенного столбца с постоянными значениями, которые мы используем во внешнем' SELECT' для условной агрегации. – peterm

+0

@justWired Помогло ли это? Вам нужна дополнительная помощь по вашему вопросу? – peterm

Смежные вопросы