Premesso che vedo sempre con diffidenza questi tentativi di query "denormalizzate"
che potrebbero essere fatte piu agevolmente a lato applicazione.
comunque a livello di principio se le foto per ogni articolo
non sono assolutamente mai piu di 4 puoi fare cosi:
Costruisci una prima Vista sulla tabella "FOTO"
che ti numera da 1 a n i record per ogni "id_articolo"
la Vista chiamala "QFOT"
codice:
SELECT
F1.ID_FOTO,
F1.id_articolo,
F1.descrizione_foto,
F1.link,
(
SELECT
Count(F2.ID_FOTO)
FROM FOTO AS F2
WHERE
(
(F2.id_Articolo=F1.id_Articolo)
AND
(F2.ID_FOTO<=F1.ID_FOTO)
)
) AS Conx
FROM
FOTO AS F1
Costruisci una seconda Vista su "ARTICOLI" e "QFOT"
codice:
SELECT
ARTICOLI.ID_ARTICOLO,
ARTICOLI.nome,
ARTICOLI.descrizione_articolo,
Max(IIf(QFOT.Conx=1,QFOT.link)) AS Link1,
Max(IIf(QFOT.Conx=1,QFOT.descrizione_foto)) AS Desc1,
Max(IIf(QFOT.Conx=2,QFOT.link)) AS Link2,
Max(IIf(QFOT.Conx=2,QFOT.descrizione_foto)) AS Desc2,
Max(IIf(QFOT.Conx=3,QFOT.link)) AS Link3,
Max(IIf(QFOT.Conx=3,QFOT.descrizione_foto)) AS Desc3,
Max(IIf(QFOT.Conx=4,QFOT.link)) AS Link4,
Max(IIf(QFOT.Conx=4,QFOT.descrizione_foto)) AS Desc4
FROM
ARTICOLI
LEFT JOIN
QFOT
ON
ARTICOLI.ID_ARTICOLO = QFOT.id_articolo
GROUP BY
ARTICOLI.ID_ARTICOLO,
ARTICOLI.nome,
ARTICOLI.descrizione_articolo
NB: Il codice proposto dovrai adeguarlo alla sintassi di MySql
.