2017-01-03 4 views
0

Я хочу, чтобы иметь результат СЦЕПИТЬ из результате объединения запроса ... мой код это:MySql CONCATENATE результат UNION

SELECT GROUP_CONCAT(rifDoc), idUser, user, dateDoc 
FROM 
(
SELECT GROUP_CONCAT(CAR.rifDoc) AS rifDoc, CAR.idUser, CAR.user, CARDETT.dateDoc 
FROM car AS CAR, carDett AS CARDETT 
WHERE CAR.id>0 CAR.id=CARDETT.idDoc CARDETT.dateDoc<='2017-01-31' 
GROUP BY idUser, dateDoc 

UNION ALL 

SELECT GROUP_CONCAT(BK.rifDoc) AS rifDoc, BK.idUser, BK.user, GROUP_CONCAT(BK.inUso) AS inUso, GROUP_CONCAT(BK.inCarico) AS inCarico, BKDETT.dateDoc 
FROM bike AS BK, bikeDett AS BKDETT 
WHERE BK.id>0 AND BK.id=BKDETT.idDoc AND BKDETT.dateDoc<='2017-01-31' 
GROUP BY idUser, dateDoc 
) 

GROUP BY idUser, dateDoc 

Но у меня есть ошибка, как это:

#1248 - Every derived table must have its own alias 

У кого-то есть решения?

+0

Ошибки сама за себя - добавить псевдоним после последнего права скобка. –

ответ

3

Вы пропускаете псевдоним для представления инлайн или подзапроса, как и ошибочные состояния, как

SELECT GROUP_CONCAT(rifDoc), idUser, `user`, dateDoc 
FROM 
(
SELECT GROUP_CONCAT(CAR.rifDoc) AS rifDoc, CAR.idUser, CAR.user, CARDETT.dateDoc 
FROM car AS CAR, carDett AS CARDETT 
WHERE CAR.id>0 CAR.id=CARDETT.idDoc CARDETT.dateDoc<='2017-01-31' 
GROUP BY idUser, dateDoc 

UNION ALL 

SELECT GROUP_CONCAT(BK.rifDoc) AS rifDoc, BK.idUser, BK.user, GROUP_CONCAT(BK.inUso) AS inUso, GROUP_CONCAT(BK.inCarico) AS inCarico, BKDETT.dateDoc 
FROM bike AS BK, bikeDett AS BKDETT 
WHERE BK.id>0 AND BK.id=BKDETT.idDoc AND BKDETT.dateDoc<='2017-01-31' 
GROUP BY idUser, dateDoc 
) XXX  <--- here 
+0

СПАСИБО !! код работает: SELECT ... FROM ( SELECT ... FROM ... WHERE ... GROUP BY ... UNION ALL SELECT ... FROM ... WHERE ... GROUP BY ... ) в качестве РЕЗУЛЬТАТА –

0

Каждая производная таблица (AKA подзапрос) действительно должны иметь псевдоним. То есть каждому запросу в скобках должен быть присвоен псевдоним (AS any), который может использоваться для ссылки на него в остальной части внешнего запроса. Я не уверен, но я думаю, что ваш код должен быть, как это

SELECT GROUP_CONCAT(rifDoc), idUser, user, dateDoc 
FROM 
(
SELECT GROUP_CONCAT(CAR.rifDoc) AS rifDoc, CAR.idUser, CAR.user, CARDETT.dateDoc 
FROM car AS CAR, carDett AS CARDETT 
WHERE CAR.id>0 CAR.id=CARDETT.idDoc CARDETT.dateDoc<='2017-01-31' 
GROUP BY idUser, dateDoc) As T1 

UNION ALL 

(SELECT GROUP_CONCAT(BK.rifDoc) AS rifDoc, BK.idUser, BK.user, GROUP_CONCAT(BK.inUso) AS inUso, GROUP_CONCAT(BK.inCarico) AS inCarico, BKDETT.dateDoc 
FROM bike AS BK, bikeDett AS BKDETT 
WHERE BK.id>0 AND BK.id=BKDETT.idDoc AND BKDETT.dateDoc<='2017-01-31' 
GROUP BY idUser, dateDoc 
)As T2) 

GROUP BY idUser, dateDoc 

не уверен в коде, но решение (как хоть что)

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