SQL join ερώτηση

Tasos Laskos tasos.laskos at gmail.com
Fri Mar 27 16:10:33 EET 2009


8a symfoniso me ton George kai sta 2 point tou.

Sostotero 8a itan to mono koino paidio sta 2 table na einai to id me to 
opoio ginete i antistixisi.

George Zarogiannis wrote:
> Νομίζω ότι όντως ζητάς πολλά από την SQL :)
>
> Ο μοναδικός τρόπος που μπορώ να σκεφτώ, υποθέτωντας ότι γράφεις σε 
> κάποια γλώσσα, είναι να διαβάσεις πρώτα τα πεδία των 2 πινάκων και 
> μετά να φτιάξεις δυναμικά το SELECT ώστε να περιέχει κάθε όνομα πεδίου 
> 1 φορά. Το πως θα το κάνεις αυτό, εξαρτάται από τη γλώσσα/βάση που 
> δουλεύεις...
>
> πχ ένας τρόπος να δεις τα πεδία ενός table από τη java, ανεξάρτητα 
> βάσης, είναι αυτός 
> <http://www.roseindia.net/jdbc/jdbc-mysql/ColumnName.shtml> 
>
> Αλλά αυτό που θες μου φαίνεται λίγο περίεργο... μήπως πρέπει να 
> ξανασκεφτείς το σχήμα της βάσης;
>
> 2009/3/27 Theodore Lytras <thlytras at gmail.com <mailto:thlytras at gmail.com>>
>
>     Έχω μια ερωτησούλα για όποιον ξέρει καλή SQL.
>     Ψάχνω στον γκούγκλη αλλά άκρη δε βρίσκω....
>
>     Έστω οτι έχω δύο πίνακες A και B, με σχέση 1:1 και κοινό πεδίο ονόματι
>     id. Αν θέλω να συνενώσω τους δύο πίνακες, θα δώσω:
>
>     SELECT * FROM A, B WHERE A.id = B.id;
>
>     ή
>
>     SELECT * FROM A INNER JOIN B USING(id);
>
>     Το πρόβλημα τώρα προκύπτει στην περίπτωση που υπάρχουν πεδία στον Α
>     και στον Β με το ίδιο όνομα. Οι δύο προηγούμενες εντολές κρατούν τα
>     πεδία και των δύο πινάκων (αφού ορίζω SELECT * ), και (τουλάχιστο σε
>     SQLite που δοκίμασα) τα πεδία του δεύτερου πίνακα μετονομάζονται με
>     την προσθήκη ενός ":1" στο όνομά τους.
>
>     Υπάρχει κάποιος τρόπος να φιλτράρω τα πεδία του δεύτερου πίνακα? Να
>     του πω δηλαδή να επιλέξει όλα τα πεδία του πρώτου πίνακα, ΣΥΝ όλα τα
>     πεδία του δεύτερου που δεν υπάρχουν στον πρώτο πίνακα. Βεβαίως αυτό με
>     κάποιο expression, χωρίς δηλαδή να ξέρω εκ των προτέρων τι πεδία
>     υπάρχουν στον ένα και στον άλλο πίνακα.
>
>     Υπ'όψιν οτι δε μιλώ για NATURAL JOIN, που (αν τουλάχιστον το κατάλαβα
>     σωστά) κρατά τις εγγραφές εκείνες εφόσον όλα τα "συνονόματα" πεδία
>     έχουν ίδιες τιμές. Εγώ θέλω να του ορίζω σαφώς ένα κοινό πεδίο για
>     INNER JOIN, και από τα υπόλοιπα "συνονόματα" πεδία να κρατά μόνο τις
>     τιμές που έχει ο ένας πίνακας, ανεξαρτήτως τι έχει ο άλλος πίνακας.
>
>     Γίνεται αυτό? Ή ζητώ πολλά από την SQL????
>
>     Ευχαριστώ προκαταβολικά,
>
>     Θοδωρής
>
>     --
>     linux-greek-users mailing list -- http://lists.hellug.gr 
>
>
>
> ------------------------------------------------------------------------
>
>
> --
> linux-greek-users mailing list -- http://lists.hellug.gr




More information about the Linux-greek-users mailing list