2017-01-03 3 views
0

Ich möchte von einem Ergebnis einer Vereinigung der Abfrage ein Ergebnis verketten haben ... mein Code ist dies:MySql CONCATENATE Ergebnis von 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 

Aber ich habe einen Fehler wie folgt aus:

#1248 - Every derived table must have its own alias 

Jemand hat eine Lösung?

+0

Fehler ist selbsterklärend - einen Alias ​​nach dem letzten rechten hinzufügen Klammer. –

Antwort

3

Sie einen Alias ​​für die Inline-View oder Unterabfrage als die Fehlerzustände wie

fehlt
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

DANKE !! Code funktioniert: SELECT ... VON ( SELECT ... VON ... WHERE ... GROUP BY ... UNION ALLE SELECT ... VON ... WHERE ... GROUP BY ... ) als ERGEBNIS –

0

Jede abgeleitete Tabelle (AKA subquery) muß in der Tat einen Alias ​​haben. I.e. Jede Abfrage in Klammern muss einen Alias ​​(AS whatever) erhalten, auf den im Rest der äußeren Abfrage Bezug genommen werden kann. Ich bin nicht sicher, aber ich denke, der Code wie folgt

sein sollte
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 

nicht sicher über den Code, aber die Lösung ist (As anythin)