Re: SQL join ερώτηση
George Zarogiannis
zarogiannis at gmail.com
Fri Mar 27 15:38:58 EET 2009
Νομίζω ότι όντως ζητάς πολλά από την SQL :)
Ο μοναδικός τρόπος που μπορώ να σκεφτώ, υποθέτωντας ότι γράφεις σε κάποια
γλώσσα, είναι να διαβάσεις πρώτα τα πεδία των 2 πινάκων και μετά να φτιάξεις
δυναμικά το SELECT ώστε να περιέχει κάθε όνομα πεδίου 1 φορά. Το πως θα το
κάνεις αυτό, εξαρτάται από τη γλώσσα/βάση που δουλεύεις...
πχ ένας τρόπος να δεις τα πεδία ενός table από τη java, ανεξάρτητα βάσης,
είναι αυτός <http://www.roseindia.net/jdbc/jdbc-mysql/ColumnName.shtml>
Αλλά αυτό που θες μου φαίνεται λίγο περίεργο... μήπως πρέπει να ξανασκεφτείς
το σχήμα της βάσης;
2009/3/27 Theodore Lytras <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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20090327/48c07ad1/attachment.htm>
More information about the Linux-greek-users
mailing list