la seconda con la WHERE puoi certamente farla,
è la "classica" soluzione
se non ti funziona ci deve essere qualcosa nella variabile
la prima invece direi che non si puo fare,
ma solo a titolo accademico e per arrampicarci sui vetri
se vogliamo mettere una variabile nelle JOIN allora
creando una VistaVirtuale ci avviciniamo
.codice:SELECT * FROM prodotti INNER JOIN ( (SELECT DISTINCT $idPuntoV AS TuaVariabile FROM prodotti) AS VistaVirtuale INNER JOIN disponibilita ON VistaVirtuale.TuaVariabile = disponibilita.idPuntoV ) ON prodotti.id = disponibilita.idProdotto ;