Consiglio su query

Ciao a tutti!

Gianni potresti dirmi se esite una maniera per migliorare queste query?  :buck:

Devo estrarre la descrizione dell'articolo dalla tabella articoli in base al codice articolo che ho in magazzino.

Prima facevo così:

$result = SELECT q, descrizione, peso, cod_art.magazzino FROM magazzino JOIN articoli ON cod_art.magazzino = cod_art.articoli WHERE id_ordine = '$id_ordine'

Poi ho dovuto cambiare la metodologia della tabella articoli in quanto se veniva apportata una modifica ad un articolo si modificava anche gl'ordini antecedenti alla modifica. E ciò non deve succerede.

Allora adesso faccio così:

$resut = SELECT q, peso, cod_art FROM magazzino WHERE id_ordine = '$id_ordine'

$row = mysql_fetch_array($result);

$descrizione = SELECT descrizione FROM articoli WHERE cod_art = $row[cod_art]; ORDER BY data DESC LIMIT 1

Non c'è un modo per eseguire una sola query?? o ci sono approcci migliori???  :angel:

Ciao

grazie  :bye:

inviato 10 anni fa
Marco Dario
X 0 X

non puoi continuare ad usare una JOIN su cod_art?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Purtoppo no gianni... Scusami ma prima mi sono dimenticato una parte fondamentale. :P

La tabella articoli ha il cod_art indicizzato ma si ripetono i cod_art. Tutto ciò perchè quando vado a recuperare un'ordine vecchio mi trova la descrizione in base a quel lasso di tempo. Quindi la query di prima sarebbe così:

$resut = SELECT q, peso, cod_art FROM magazzino WHERE id_ordine = '$id_ordine'

$row = mysql_fetch_array($result);

$descrizione = SELECT descrizione FROM articoli WHERE cod_art = $row[cod_art]; AND data <=NOW() ORDER BY data DESC LIMIT 1

Spero di essere stato chiaro.

 :bye:

risposto 10 anni fa
Marco Dario
X 0 X

Ma se lanci questa query non ottieni gli stessi risultati delle 2 query che hai indicato?

SELECT
   m.q, m.peso, m.cod_art,
   a.descrizione
FROM
   magazzino m, articoli a
WHERE
   m.id_ordine = '$id_ordine' AND
   m.cod_art = a.cod_art AND
   a.data <=NOW()
ORDER BY
   a.data DESC
LIMIT 1

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Giusto però quando devo stampare tutto insieme devo fare:

$result = SELECT DISTINCT cod_art  FROM articoli
mysql_fetch_array($result);

e poi con un cliclo while devo trovarmi la descrizione dell'articolo:

$descrizione= SELECT descrizione  FROM articoli WHERE cod_art = $row['cod_art'] AND data <= 'NOW()'

Poi ho altre query che ricercano la descrizione dell'articolo ma non posso usare il join perchè mi troverebbe la descrizione più vecchia e non quella attuale.

 :bye:

risposto 10 anni fa
Marco Dario
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda