PDA

View Full Version : [VB6] - Test a incrocio - XOR?


RixNox
18-02-2015, 18:33
E' un pò che non programmo più e c'è un pò di ruggine da eliminare ;)

Ho una tabella di database [SQL] che riguarda la locazione di un appartamento. Fintanto che il locatore è uno solo, nessun problema, memorizzo ID_Locatore in un campo numerico, e via. Ma i locatori possono essere fino a 5.
Invece di memorizzare 5 campi [locatore], potrei memorizzare un unico campo usando lo XOR (o ricordo male?) che restituisce tutte le combinazioni possibili?

Questo gioverebbe sopratutto quando si vogliono filtrare i dati

Nel qual caso andrebbe bene un int (https://technet.microsoft.com/en-us/library/aa933198%28v=sql.80%29.aspx) per memorizzare il dato?

Potete fare qualche esempio?

WarDuck
18-02-2015, 20:19
Più che XOR forse intendi una JOIN tra tabelle.

Ti serve una tabella aggiuntiva che mappi la relazione tra locatori e appartamenti.

Esempio:


Locatori
------------
Id Nome
0 Pippo
1 Pluto
2 Gastone



Appartamenti
------------
Id Nome
0 A
1 B
2 C


Tabella di relazione:


RelazioneAppartamentiLocatori
------------
IdApp IdLocatore
0 1
0 2
1 0


A quel punto puoi fare una serie di query per ricavarti quali sono i locatori di un determinato appartamento.

RixNox
19-02-2015, 08:49
Ci ragiono un attimo. Altrimenti potrei usare un byte dove a ogni posizione di bit acceso corrisponde un locatore (così ne potrei gestire fino a 8)

Grazie per il suggerimento

Mex87
19-02-2015, 17:35
Con il tuo ragionamento non usi le potenzialità dell'SQL, e quindi dovrai programmare a mano tutto il codice per gestire il filtro ed estrapolarti i bit dei locatori.

La soluzione che proponi tu oltre a limitarti a 8 locatori incasina il codice.

Mentre la soluzione di WarDuck oltre a non essere limitata è molto più semplice da capire rileggendo il codice una volta scritto.

RixNox
19-02-2015, 17:37
In realtà la relazione nella tabella già esiste, anche se indiretta:

appartamento -> Contratto (1 a N) -> Locatori (1 a 5)

Mex87
20-02-2015, 09:25
In realtà la relazione nella tabella già esiste, anche se indiretta:

appartamento -> Contratto (1 a N) -> Locatori (1 a 5)

Il collegamento dovrebbe essere del tipo
Contratto (1 a N) - (N a 1) Locatori
In questo modo avresti la tabella di relazione

Più che XOR forse intendi una JOIN tra tabelle.
...

Tabella di relazione:


RelazioneAppartamentiLocatori
------------
IdApp IdLocatore
0 1
0 2
1 0


A quel punto puoi fare una serie di query per ricavarti quali sono i locatori di un determinato appartamento.