You need to use both a full cartesian join and an OUTER JOIN. Thus:
SELECT M.model, C.colour, IF(A.modelid IS NULL,'No','Yes') AS isAvailable
FROM models AS M
INNER JOIN colours AS C ON 1=1
LEFT JOIN availability AS A ON A.modelid = M.modlid AND A.colourid = C.colourid
ORDER BY M.model, C.colour
The full cartesian join is forced by the dummy ON clause (ON 1=1), so that *every* model will be matched with *every* colour.
The LEFT join will then give a NULL value for A.modelid when there is no match, and we take advantage of that to produce the "NO" or "YES" that you wanted.
Try that in a MySQL query tool *first* before you try it in your PHP code, to make sure it gives you what you want.