2015-04-29 1 views
0

нужно выбрать какую-то конкретная сумму из накидного запроса к 3 таблице, которые должны быть
доступны в поле колонки, но я вижу ошибки кода Ошибки: 1054. Неизвестного столбец «m.Id 'in' where clause ' Похоже, что MVID в объединенном дополнительном запросе не виден. как я могу заставить его работать, без функций, только через запрос.MySql ссылка таблица в запросе накидной

SELECT 
    m.COL1, 
    m.COL2, 
    p.Id, 
    (
     SELECT 
      sum(cp) 
     FROM (
       SELECT 
        count(*) as cp 
       FROM 
        T1 as o 
       WHERE 
        o.st = 4 
        AND o.LId = m.Id 

       UNION ALL 

       SELECT 
        count(*) as cp 
       FROM 
        T2 as oh 
       WHERE 
        oh.st = 0 
        AND oh.LId = m.Id 

       UNION ALL 

       SELECT 
        count(*) as cp 
       FROM 
        T3 as os 
       WHERE 
        os.st = 4 
        AND os.LId = m.Id 

      ) as PP 
     ) as IsFB 

    FROM 
     TM as m 
     JOIN TME as mx ON m.Id = mx.MId 
     JOIN TP as p ON m.CID = p.PID 
+0

каждый запрос, являющийся частью союза, должен работа, например. 'SELECT count (*) как cp FROM T1 как o, где o.st = 4 и o.LId = m.Id', поэтому вам нужно добавить необходимые соединения и столбцы в каждый из этих –

+0

@IanKenney Не могли бы вы привести пример в коде. Как я могу присоединиться к ней с таблицей TM –

+1

уверен - достаточно отправить достаточно вашей схемы, чтобы показать, как T1, T2 и T3 относятся к TM TME и TP. Также покажите образец вывода, который вы хотите –

ответ

1

Его трудно ответить без вас обеспечивая немного больше информации о том, что именно вы хотите

, но, для начала делать стыки в ваших вложенных запросах, что-то вроде:

  SELECT 
       TM.COL1, TM.COL2, TM.id, count(*) as cp 
      FROM 
       T1 
      JOIN 
       TM 
      ON 
       T1.LId = TM.id 
      GROUP BY 
       TM.COL1, TM.COL2, TM.id 

Затем вы сможете присоединиться к этому во внешнем запросе, что-то вроде

SELECT 
    UU.COL1, 
    UU.COL2, 
    TP.ID, 
    sum(UU.cp) 
FROM (
    ** union query goes here 
) UU 
JOIN TP ON UU.id = TP.PID 
GROUP BY 
    UU.COL1, UU.COL2, TP.ID 
Смежные вопросы