Re: SQL join ερώτηση

Kostis P. Ventrix ventrix at gmail.com
Fri Mar 27 15:22:55 EET 2009


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


Γιατί δεν δοκιμάζεις με TableA.field1 TableB.field1;

-- 
PLUG mailing list: http://lists.hellug.gr/pipermail/plug/
Debian Blog: http://ventrix24.blogspot.com
Android: http://www.androiddev.gr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hellug.gr/pipermail/linux-greek-users/attachments/20090327/e6cb1bf9/attachment.htm>


More information about the Linux-greek-users mailing list