DROP VIEW IF EXISTS tax__all;
CREATE VIEW tax__all AS
SELECT 
t3.`family`,
/* Concat für binomial */
CONCAT(t1.genus, ' ', t1.species) AS binomial,

/* Subquery für trinomial, falls Subspecies vorhanden */
/* Für die Subquery wird der gleiche Table mit anderem Alias abgefragt und dann in der WHERE clause über genus, species und subspecies wieder verbunden. Damit ist sichergestellt, dass die Subquery nur für die jeweilige Zeile eine Ergebnis auswirft. */ 
(SELECT 
(CONCAT(t2.`genus`, ' ', t2.`species`, ' ', t2.`subspecies`))  
FROM tax__subspecies AS t2
WHERE t2.`subspecies`!='' 
AND t2.species=t1.species
AND t2.genus=t1.genus
AND t2.subspecies=t1.subspecies) 
AS trinomial,

/* Normale Spaltenabfrage */
t1.`genus`, 
t1.`species`,
t1.`subspecies`

FROM tax__subspecies AS t1
JOIN tax__genus AS t3
ON t3.genus=t1.genus;