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