disallineamento tabelle

Ciao,

nel mio db mysql,

ho 2 tabelle che sono relazionate 1 a 1 mediante la loro chiave primaria.

Entrambe le tabelle dovrebbero avere lo stesso numero di record, ma una ne ha qualcuno in più

vorrei fare una query per visualizzare solo i campi che sono di troppo.

Sapete dirmi come fare?

Grazie!!

inviato 8 anni fa
RobinHoood
X 0 X

supponendo che i campi in comune tra le due tabelle A e B siano A.id e B.id, per trovare i record presenti in A e non in B:

SELECT * FROM A LEFT JOIN B ON A.id = B.id WHERE B.id IS NULL

Dovresti comunque verificare l'opportunità di unire le due tabelle in una sola.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Grazie mille Gianni,

come sempre preciso ed infallibile!

Sto anche valutando la possibilità di unire le tabelle.

Quando ho progettato il mio db ho ritenuto di tenerle separate, ma relazionate, per non appesantirle e rendere le queryes + veloci.

Pensi che avrei dovuto ragionare in maniera diversa?

Ovviamente sono sempre contento di imparare e migliorare

Grazie ancora

risposto 8 anni fa
RobinHoood
X 0 X

Le relazioni "uno a uno" tra due tabelle sono motivate solo quando non c'è partecipazione totale, ovvero quando in una tabella non sono presenti tutti i record omologhi dell'altra tabella. In questo caso avere 2 tabelle evita il gran numero di campi a null.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni!!!

Sinceramente non mi è molto chiaro quello che hai spiegato sulle relazioni 1:1.

Comunque ho deciso che devo unire queste due tabelle.

Sapresti illustrarmi qual'è la maniera più corretta???

Grazie1000

risposto 8 anni fa
RobinHoood
X 0 X

mi sa che ti tocca lavorare un po'... per prima cosa scegli la tabella da conservare (magari quella con più campi)  e modificala in modo da inserire i campi dell'altra tabella, ad eccezione ovviamente dei campi della chiave primaria che saranno già presenti.

Puoi crea uno script PHP che legge tutte le righe della tabella da cancellare ed esegue degli UPDATE nella tabella da conservare, in modo da inserire un valore nelle nuove colonne della tabella.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda