Η μία λύση είναι να μην ενώσεις τους πίνακες. Αν μπορείς να τους περάσεις στην HandBase χωρίς να έχεις προβλήματα με τις φόρμες σου, μην τους ενώνεις. Αφού η HandBase υποστηρίζει σχέσεις μεταξύ πινάκων (ακόμα και αν λέει τους πίνακες "βάσεις") δεν χρειάζεται να ενώσεις τους πίνακες. Το πρόβλημα είναι πως θα σχεδιάσεις τις φόρμες, όχι πως θα περάσεις τους πίνακες.
Από την άλλη, ο μόνος τρόπος για να συνδέσεις δεδομένα πολλών πινάκων είναι με ένα select. Αν το join σου επιστρέφει περιττές ή επαναλαμβανόμενες εγγραφές, πρέπει να προσθέσεις τα κατάλληλα κριτήρια που θα τις αφαιρέσουν. Στην περίπτωση σου, αυτό που ζητάς είναι να μετατρέψεις τις γραμμές ενός query σε στήλες. Μπορείς να χρησιμοποιήσεις το παρακάτω query:
select
C.Name, P1.PhoneNumber as HomeNumber, P2.PhoneNumber as FaxNumber, P3.PhoneNumber as AlertNumber
from
Customer C, Phone P1, Phone P2, Phone P3
where
C.CustomerID=P1.CustomerID and
C.CustomerID=P2.CustomerID and
C.CustomerID=P3.CustomerID and
P1.Description='Home Number' and
P2.Description='Fax Number' and
P3.Description='Alert Number'
Το μυστικό για να δουλέψεις με SQL και βάσεις γενικά είναι να καταλάβεις ότι χειρίζεσαι πάντα σύνολα δεδομένων, όχι μεμονομένα δεδομένα. Εδώ θέλεις να δείξεις για κάθε πελάτη το τηλέφωνο σπιτιού, το fax και το συναγερμό. Πρέπει να συνδέσεις δηλαδή τα δεδομένα των πελατών, με τα τηλέφωνα σπιτιών (τα οποία είναι μοναδικά για κάθε πελάτη), με τα fax (επίσης μοναδικά για κάθε πελάτη), και τους συναγερμούς (επίσης μοναδικοί για κάθε πελάτη). Οπότε, φτιάχνεις ένα query το οποίο επαναλαμβάνει κάθε φορά τον πίνακα των τηλεφώνων με περιορισμό να περιέχει μόνο ένα τύπο τηλεφώνου κάθε φορά. Για να είναι γρήγορο αυτό το query πάντως καλό είναι να βάλεις και ένα index στην περιγραφή.
Το είδος αυτών των queries λέγεται pivot καθώς "περιστρέφουν" τα δεδομένα του πίνακα και τα μετατρέπουν από γραμμές σε στήλες βάση του τύπου τους. Αν ψάξεις στο internet θα βρεις αρκετούς τρόπους τόσο να μετατρέψεις τις γραμμές σε στήλες όσο και το αντίθετο
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos