Detto che la struttura del database non mi sembra affatto ragionevole, il che implica restrizioni (possibile che non ci sia una "posto" dove passano 3 linee?)
e difficolta' nelle query, motivo dei giorni di sbattimento della testa (join su FERMATA e SCALO che sono due tabelle con contenuti dello stesso tipo)....
SELECT
id_linea,
nome,
stazione_partenza,
stazione_arrivo,
IFNULL(FERMATA.nome,FERMATA1.nome),
IFNULL(FERMATA2.nome,'non applicabile')
FROM LINEA
LEFT JOIN FERMATA
USING(id_linea)
LEFT JOIN SCALO AS SCALO1
ON LINEA.id_linea = SCALO1.id_linea1
LEFT JOIN FERMATA AS FERMATA1
SCALO1.id_fermata = FERMATA1.id_fermata
LEFT JOIN SCALO AS SCALO2
ON LINEA.id_linea = SCALO2.id_linea2
LEFT JOIN FERMATA AS FERMATA2
SCALO1.id_fermata = FERMATA2.id_fermata
WHERE
stazione_partenza = $stazione_partenza
stazione_arrivo =$stazione_arrivo
Questa penso faccia piu' o meno quello di cui hai bisogno (chiaramente non ho potuto testarla)... facci sapere.
Onestamente ti consiglierei di ristrutturare completamente il database in maniera ragionevole. Le query sarebbero banali.
ciao