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