Originariamente inviato da OhMyGod
quella query estrae dei records dalle due tabelle "veicoli" e "dettagli", aventi il campo "km" maggiore di 14.000 (suppongo sia un campo della tabella "veicoli", giusto?) ed il campo "colore" uguale a "rosso" (suppongo sia un campo della tabella "dettagli"). è generalmente una notazione poco corretta (perlomeno in casi come questo) perchè non imposta le giuste relazioni tra una tabella e l'altra. consiglio questa forma:
codice:
SELECT *
FROM veicoli
LEFT JOIN dettagli ON dettagli.id_veicolo = veicoli.id_veicolo
WHERE km > 14000 AND colore LIKE 'rosso'
che dice al motore di MySQL di estrarre tutti i veicoli con più di 14.000 KM e di colore rosso (come prima), ma mettendo in relazione la tabella dei dettagli con quella dei veicoli, secondo un campo "id_veicolo" (che è l'ID chiave della tabella "veicoli") che deve essere comune ad entrambe le tabelle (ogni record della tabella "dettagli" deve avere un riferimento al veicolo, altrimenti non puoi sapere a cosa si riferisca quel particolare dettaglio. questo riferimento è un campo che riporta l'ID del veicolo al quale è collegato).
nella clausola WHERE, quando si lavora con le stringhe, è sempre buona norma usare l'operatore LIKE anzichè l'operatore = quando non deve necessariamente essere rispettata un'uguaglianza perfetta tra le due stringhe. in particolare, l'operatore = è case-sensitive ('rosso' viene valutato diversamente da 'Rosso', quindi la ricerca secondo la stringa 'rosso' non estrarrebbe il veicolo 'Rosso'), mentre LIKE è case-insensitive (ricercando 'rosso' viene trovato anche 'Rosso').