Domanda

Noob-tipo di domanda:

Di 'Ho due tabelle, caramelle e colori. La tabella di colori tiene le coppie appena codice / valore come 01 giallo, 02 blu, 03 verdi, ecc e viene fatto riferimento nella tabella caramelle dal codice.

Come faccio a interrogare le caramelle da tavolo per tutte le caramelle blu senza un esplicito si uniscono? Per due anni ho scritto queste query con join, come:

SELECT * FROM caramelle un JOIN colori o ON (a.color_code = o.color_code)
DOVE = o.color_value 'blu';

Sono sicuro ogni volta che sto portando una pistola ad una lotta coltello, ma il mio googling è stata infruttuosa.

Grazie.

È stato utile?

Soluzione

"Sono certo ogni volta che sto portando una pistola ad una lotta coltello, ma il mio googling è stato inutile." Cosa te lo fa pensare? RDBMS sono costruiti per 'unire'

Se il vostro scopo è quello di farvi SQL più leggibile allora si potrebbe preferire la ' usando ' sintassi:

SELECT * FROM candies JOIN colors USING(color_code) WHERE color_value = 'blue';

In alternativa, visto che si è hard-codifica 'blu' nella tua ricerca, si potrebbe prendere in considerazione a livello di codice il codice invece:

SELECT * FROM candies WHERE color_code = '02';

ma questo diminuirà la leggibilità a meno che nello scenario del mondo reale i codici sono descrittivi (ad esempio 'BLU' per il blu)

Altri suggerimenti

Si può scrivere come:

select
  ca.*
from
  candies ca
where
  ca.color_code = (
    select co.color_code
    from colors co
    where co.color_value = 'blue'
  )

ma ci dovrebbe essere alcuna differenza. In realtà il join approccio è un po 'più robusto.

Cosa c'è di più - considerare sbarazzarsi della tabella colori a tutti, e utilizzando solo color_values ??invece di codici. In realtà è più efficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top