Ciao,
partiamo dalla tua query di prova:
codice:
SELECT
mele.datamele , mele.codmele, mele.nomemele, mele.totmele,
confmele.dataconfmele, confmele.codconfmele, confmele.nomeconfmele, confmele.tottotconfmele,
FROM mele INNER JOIN confmele ON
mele.codmele = confmele.codconfmele ORDER BY 2
va bene l'impostazione per estrarre i dati dalle prime due tabelle... l'unica cosa credo che hai messo una virgola in più dopo confmele.tottotconfmele. La query esatta è:
codice:
SELECT
mele.datamele , mele.codmele, mele.nomemele, mele.totmele,
confmele.dataconfmele, confmele.codconfmele, confmele.nomeconfmele, confmele.tottotconfmele
FROM mele INNER JOIN confmele ON
mele.codmele = confmele.codconfmele
ORDER BY 2
inoltre, anzichè lanciare le query scrivendo
codice:
$res = mysql_query($query);
utilizza il comando "die" per scropire qual è l'errore di sintassi.
Qui trovi un esempio di utilizzo
per quanto riguarda la terza tabella, la prima considerazione è che non è corretto utilizzare tante colonne, quanti sono gli articoli venduti (es: cod1fattmele, cod2fattmele, ecc ). La cosa corretta da fare è utilizzare un quarta tabella (tb_rec_fatt) così strutturata:
codice:
idfatt idfatt_rec codfattmele totfattmele nomefattmele
5 1 RS12 5000 ROSSA
5 2 VD13 5000 VERDE
e lasciare nella tabella (fattmele) solo i dati di fatturazione
codice:
idfatt datafatt dittfattmele clifattmele eurofattmele
5 27/01/2013 ibosrl cibosrl 25,5
In questo modo la query finale dovrebbe essere:
codice:
SELECT
mele.datamele , mele.codmele, mele.nomemele, mele.totmele,
confmele.dataconfmele, confmele.codconfmele, confmele.nomeconfmele, confmele.tottotconfmele,
tb_rec_fatt.idfatt_rec, tb_rec_fatt.totfattmele,
fattmele.idfatt, fattmele.datafatt, fattmele.dittfattmele, fattmele.clifattmele,
fattmele.eurofattmele
FROM mele, confmele, tb_rec_fatt, fattmele
where mele.codmele = confmele.codconfmele
and mele.codmele = tb_rec_fatt.codfattmele
and tb_rec_fatt.idfatt=fattmele.idfatt
ORDER BY 2
In alternativa se non vuoi cambiare le logiche delle tue tabelle, ahimè devi fare così:
codice:
SELECT *
FROM fattmele A,
(
SELECT
mele.datamele , mele.codmele, mele.nomemele, mele.totmele,
confmele.dataconfmele, confmele.codconfmele, confmele.nomeconfmele, confmele.tottotconfmele
FROM mele INNER JOIN confmele ON
mele.codmele = confmele.codconfmele
) MELE1,
(
SELECT
mele.datamele , mele.codmele, mele.nomemele, mele.totmele,
confmele.dataconfmele, confmele.codconfmele, confmele.nomeconfmele, confmele.tottotconfmele
FROM mele INNER JOIN confmele ON
mele.codmele = confmele.codconfmele
) MELE2
WHERE A.cod1fattmele=MELE1.codmele
AND A.cod2fattmele=MELE2.codmele
Puoi notare che se eventualmente si aggiunge un terzo, quarto articolo nella fattura... devi cambiare la query di estrazione
Spero di essere stato chiaro... altrimenti, chiedi pure
Ciao
Michele