UNION

2017-01-03 49 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

每一個派生表(又名子查詢)的確應該有一個別名。即括號中的每個查詢都必須被賦予一個別名(AS whatever),這可以用於在外部查詢的其餘部分引用它。 我不知道,但我覺得你的代碼應該是這樣的

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 

不知道的代碼,但解決的辦法是(作爲幹啥)