Προς το περιεχόμενο

συσχέτιση συγγένειας SQLite βαση


thiva7
Μετάβαση στην απάντηση Απαντήθηκε από bilakos26,

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπερα σε ολους

Προσπαθώ να φτιάξω σε ενα μινι πρόγραμμα που εχω συσχέτιση συχετιση των χρηστών μεταξύ τους. το φτιαχνω σε python

μια απλη βαση χωρις πολλα πολα για τους χρηστες

CREATE TABLE IF NOT EXISTS Users ( user_id INTEGER PRIMARY KEY, username TEXT)

και η βαση για την συσχέτιση

CREATE TABLE IF NOT EXISTS Relationships

( relationship_id INTEGER PRIMARY KEY, user1_id INTEGER, user2_id

INTEGER, relationship_type TEXT)

Τι Query πρεπει να κανω η να βαλω στο κωδικα για να παιρνω σωστα τα δεδομενα ? εννοω πχ
εαν ο user1 ειναι πατερας του user2 οταν μπαινεις στην καρτελα του user1 να δειχνει τον user2 ως Γιο , και στην καρτελα του user2 τον user1 ως πατερα.

και με την ιδια λογικη για μητερα κλπ...

 

Ευχαριστω

Επεξ/σία από thiva7
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αν αντιλήφθηκα σωστά την ερώτησή σου, ας υποθέσουμε οτι έχουμε τις παρακάτω εκχωρήσεις:

INSERT INTO users(user_id, username) VALUES (1, 'Thanos');
INSERT INTO users(user_id, username) VALUES (2, 'Vasilis');
INSERT INTO relationships(relationship_id , user1_id, user2_id, relationship_type) VALUES (1, 1, 2, 'Son');
INSERT INTO relationships(relationship_id , user1_id, user2_id, relationship_type) VALUES (2, 2, 1, 'Father');

Με βάση αυτό, για να δούμε την σχέση μεταξύ του χρήστη 1 και χρήστη 2 μπορούμε να κάνουμε τo εξής query:

SELECT U2.username, R.relationship_type FROM relationships R
INNER JOIN users U1 ON R.user1_id = U1.user_id
INNER JOIN users U2 ON R.user2_id = U2.user_id
WHERE U1.user_id = 1;

Ελπίζω να σε βοήθησα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 6/11/2023 στις 11:09 ΠΜ, bilakos26 είπε

Αν αντιλήφθηκα σωστά την ερώτησή σου, ας υποθέσουμε οτι έχουμε τις παρακάτω εκχωρήσεις:

INSERT INTO users(user_id, username) VALUES (1, 'Thanos');
INSERT INTO users(user_id, username) VALUES (2, 'Vasilis');
INSERT INTO relationships(relationship_id , user1_id, user2_id, relationship_type) VALUES (1, 1, 2, 'Son');
INSERT INTO relationships(relationship_id , user1_id, user2_id, relationship_type) VALUES (2, 2, 1, 'Father');

Με βάση αυτό, για να δούμε την σχέση μεταξύ του χρήστη 1 και χρήστη 2 μπορούμε να κάνουμε τo εξής query:

SELECT U2.username, R.relationship_type FROM relationships R
INNER JOIN users U1 ON R.user1_id = U1.user_id
INNER JOIN users U2 ON R.user2_id = U2.user_id
WHERE U1.user_id = 1;

Ελπίζω να σε βοήθησα.

Σε ευχαριστω για την απαντηση , δεν υπαρχει τροπος να προσπεράσω την πολλαπλη εισαγωγη δεδομενων?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Η πολλαπλη εισαγωγη δεδομένων που σου έχω δώσει είναι απλά σαν παράδειγμα, το οποιο μπορεις και να αφαιρέσεις.

Επεξ/σία από bilakos26
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

13 ώρες πριν, bilakos26 είπε

Η πολλαπλη εισαγωγη δεδομένων που σου έχω δώσει είναι απλά σαν παράδειγμα, το οποιο μπορεις και να αφαιρέσεις.

Μα άμα το αφαιρέσω... Δεν θα δείχνει σαν Πατέρα και γιό. 

Αυτό που έχεις στείλει στο παράδειγμα με μικρές διαφορές το έχω τωρα. 

Το θέμα μου είναι ότι αν βάλω πχ βάλω γιος οποίο id και να ψάξω και στους δύο θα δείχνει γιος... 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 10/11/2023 στις 2:52 ΜΜ, thiva7 είπε

Μα άμα το αφαιρέσω... Δεν θα δείχνει σαν Πατέρα και γιό. 

Αυτό που έχεις στείλει στο παράδειγμα με μικρές διαφορές το έχω τωρα. 

Το θέμα μου είναι ότι αν βάλω πχ βάλω γιος οποίο id και να ψάξω και στους δύο θα δείχνει γιος... 

Αυτο το "γιος" που αναφερεις, με ποιον τροπο το εκχωρεις και με ποιον τροπο το κανεις αναζητηση;
 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Μα δεν κάνω κάποια αναζήτηση.

Πχ αν ο Θάνος είναι ο πατέρας του Βασίλη μόλις μπούμε στην καρτέλα τους θέλουμε να δείξει την σωστή συσχέτιση. Θα ήθελα να αποφύγω την πολλαπλη καταχώρηση... Αλλά στο τέλος εκεί θα καταλειξω μάλλον 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Λύση
16 ώρες πριν, thiva7 είπε

Μα δεν κάνω κάποια αναζήτηση.

Πχ αν ο Θάνος είναι ο πατέρας του Βασίλη μόλις μπούμε στην καρτέλα τους θέλουμε να δείξει την σωστή συσχέτιση. Θα ήθελα να αποφύγω την πολλαπλη καταχώρηση... Αλλά στο τέλος εκεί θα καταλειξω μάλλον 

Συγγνωμη για το "αναζητηση" ητανε παρερμηνια δικια μου.

Απο την στιγμη που η συσχετιση θα γινει απο την μερια της καρτελας, οπου πιθανοτατα για τον Θανο θα πρεπει να ορισεις οτι ο γιος του ειναι ο Βασιλης ή το οτι ο Βασιλης εχει για πατερα τον Θανο, δεν βλεπω διαφορετικη λυση για να κανεις την συσχετιση μεταξυ τους χωρις πολλαπλες εκχωρησεις.

Και με ChatGPT που το ετρεξα λιγο, σχετικα ιδια ερμηνια μου δινει. Μπορεις να δεις εδω την συζητηση που ειχα μαζι του

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

37 λεπτά πριν, bilakos26 είπε

Συγγνωμη για το "αναζητηση" ητανε παρερμηνια δικια μου.

Απο την στιγμη που η συσχετιση θα γινει απο την μερια της καρτελας, οπου πιθανοτατα για τον Θανο θα πρεπει να ορισεις οτι ο γιος του ειναι ο Βασιλης ή το οτι ο Βασιλης εχει για πατερα τον Θανο, δεν βλεπω διαφορετικη λυση για να κανεις την συσχετιση μεταξυ τους χωρις πολλαπλες εκχωρησεις.

Και με ChatGPT που το ετρεξα λιγο, σχετικα ιδια ερμηνια μου δινει. Μπορεις να δεις εδω την συζητηση που ειχα μαζι του

Ναι και γω δεν βλέπω να γίνεται κάτι διαφορετικό. Σε ευχαριστώ πολύ για το χρόνο σου 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Γειά και από μένα

Ίσως μπορείς να δείς το relationship σαν ζεύγος τιμών  δηλαδή στην καταχώριση θα πάει έτσι

INSERT INTO relationships(relationship_id , user1_id, user2_id, relationship_type) VALUES (1, 1, 2, ['Father', 'Son']);

Αυτό σημαίνει ότι το 1 είναι Father και το 2 Son. Όταν θέλεις τη σχέση του user2_id προς το user1_id πρέπει να αντιστρέφεις τις τιμές.

To datatype που θα χρησιμοποιήσεις δεν ξέρω σίγουρα κάτι που υποστηρίζει η database. Json υποστηρίζουν οι περισσότερες, array ίσως ή και string

Επεξ/σία από k33theod
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 13/11/2023 στις 6:54 ΜΜ, k33theod είπε

Γειά και από μένα

Ίσως μπορείς να δείς το relationship σαν ζεύγος τιμών  δηλαδή στην καταχώριση θα πάει έτσι

INSERT INTO relationships(relationship_id , user1_id, user2_id, relationship_type) VALUES (1, 1, 2, ['Father', 'Son']);

Αυτό σημαίνει ότι το 1 είναι Father και το 2 Son. Όταν θέλεις τη σχέση του user2_id προς το user1_id πρέπει να αντιστρέφεις τις τιμές.

To datatype που θα χρησιμοποιήσεις δεν ξέρω σίγουρα κάτι που υποστηρίζει η database. Json υποστηρίζουν οι περισσότερες, array ίσως ή και string

Δεν είναι κακή ιδέα... Θα το δοκιμάσω αργότερα να το δω. Ευχαριστώ 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...