SQL join ερώτηση
P. Christeas
p_christ at hol.gr
Sat Mar 28 09:29:52 EET 2009
On Saturday 28 March 2009, Θοδωρής Λύτρας wrote:
> Sure enough, πάλι όμως ορίζεις συγκεκριμένα πεδία από τον πίνακα tableB. Η
> ερώτηση ήταν αν θα μπορούσα να χρησιμοποιήσω κάποιο "expression" στη SELECT
> που να επιλέγει "όσα πεδία του tableB δεν έχουν συνονόματα στον tableA",
> χωρίς να μπώ στον κόπο να τα ονομάσω συγκεκριμένα.
Ναι, κι αυτό γίνεται , αλλά δεν θές να το κάνεις! (πχ. να βρίσκει από μόνη της
από system tables τα ονόματα των στηλών και να διαλέγει)
> Μάλλον το μόνο expression που καταλαβαίνει η SQL όσον αφορά στο ποιά πεδία
> θές να συμπεριλάβεις στο query είναι το * , δηλαδή όλα. Δείχνει αρκετά
> περιοριστικό, όταν αντίθετα σου δίνει τόσες δυνατότητες να ορίσεις το ποιες
> *εγγραφές* επιλέγεις στο query.
πρέπει να θυμάσαι κάτι όμως: η SQL δεν είναι procedural. Και για τον ίδιο
λόγο, δεν έχει εντολές που θα σου επέστρεφαν ακαθόριστο αποτέλεσμα.
Ένα κοινό λάθος: (ας πούμε στην PHP)
$rows = $db.exec("SELECT * FROM tableA;");
...
$name = ($rows[0])[1];
επικίνδυνο! γιατί δεν ξέρεις αν το $row[1] θα είναι η στήλη 'name' η
η 'bike' .. Το ότι έπαιξε μία φορά στην db που έστησες, δε σημαίνει ότι θα
παίζει πάντα (ένα ALTER TABLE να είχες κάνει, θα έσπαγε).
Κοινώς: μην το παρακάνεις με το αστεράκι!
--
Say NO to spam and viruses. Stop using Microsoft Windows!
More information about the Linux-greek-users
mailing list