Aliasing table dérivée qui est une union de deux sélectionne

Je ne peux pas obtenir la syntaxe de la droite pour créer un alias de la table dérivée correctement:

SELECT * FROM 
  (SELECT a.*, b.* 
    FROM a INNER JOIN b ON a.B_id = b.B_id
    WHERE a.flag IS NULL AND b.date < NOW()
  UNION
  SELECT a.*, b.* 
    FROM a INNER JOIN b ON a.B_id = b.B_id
    INNER JOIN c ON a.C_id = c.C_id
    WHERE a.flag IS NOT NULL AND c.date < NOW())
  AS t1
ORDER BY RAND() LIMIT 1

Que je vais avoir un Double nom de la colonne de B_id. Des suggestions?

OriginalL'auteur jontyc | 2011-11-29