katina Δημοσ. 30 Ιουνίου 2011 Δημοσ. 30 Ιουνίου 2011 Έχω 2 πίνακες Μαθητής(idA,idB) Πατέραδες(idB,Όνομα) και θέλω να εμφανίσω όλα τα ονόματα των πατεράδων των μαθητών. Να εμφανίζονται ακόμη και οι κενές όμως εγγραφές που μπορεί να υπάρχουν. Κάποιες δηλαβή εγγραφές του πίνακα μαθητής μπορεί να μην έχουν περασμένο IdB. Πως μπορεί να γραφεί αυτό με sql;
Apoll Δημοσ. 30 Ιουνίου 2011 Δημοσ. 30 Ιουνίου 2011 Πανεύκολη ερώτηση αν έχεις βασικές γνώσεις SQL. SELECT idA, idB, Όνομα(Πατέρα πιθανόν) FROM Μαθητής LEFT OUTER JOIN Πατεράδες ON Μαθητής.idB = Πατεράδες.idB Η παραπάνω θα σου επιστρέψει NULL ή default value (αν την έχεις θέση) στο όνομα του Πατέρα. Αν δεν θες NULL value, πιθανόν ένα ISNULL να βοηθήσει.
katina Δημοσ. 30 Ιουνίου 2011 Μέλος Δημοσ. 30 Ιουνίου 2011 Σε ευχαριστώ πολύ. Πως μπορεί να γίνει όμως χωρίς Joins αλλά με Select-From-Where?
Apoll Δημοσ. 30 Ιουνίου 2011 Δημοσ. 30 Ιουνίου 2011 Ποιό το πρόβλημα με την join? Ζητάς να σου επιστρέφονται τιμές ακόμα και αν δεν υπάρχουν σε στον δεύτερο πίνακα.
katina Δημοσ. 1 Ιουλίου 2011 Μέλος Δημοσ. 1 Ιουλίου 2011 Έχω ένα πολύ μεγάλο query. Μπορώ να προσθέσω και jοins? Σου έστειλα pm. Mην τρομάξεις!
Apoll Δημοσ. 1 Ιουλίου 2011 Δημοσ. 1 Ιουλίου 2011 Σου απάντησα. Μη γνωρίζοντας τη δομή των πινάκων υποθέτω ότι θα καταλάβεις τι γράφω Επίσης μεγάλο query αυτό; Ξεμπέρδεψα σήμερα με ένα sql query το οποίο χρειάστηκε 38 A4 σελίδες να βάλω στο technical spec για το project να περάσει από έγκριση για προγραμματισμό.
leonidas_fs Δημοσ. 5 Ιουλίου 2011 Δημοσ. 5 Ιουλίου 2011 Ρε παιδια εχω μπερδευτεί! Εχω εναν πίνακακ που λέγετε dateofcall. Οταν τρεχω το ερωτημα θέλω να μου βγάζει μονο τις σημερινές ημερομηνίες στο dateofcall. select curdate() from table.. Σωστά το γράφω ? έτσι έχει σύνταξη η curdate? Πως θα το συντάξω σωστά? κανείς?? Πως συντάσετε αυτη η ρουφιάνα η curdate?
Ticket Δημοσ. 5 Ιουλίου 2011 Δημοσ. 5 Ιουλίου 2011 Ρε παιδια εχω μπερδευτεί! Εχω εναν πίνακακ που λέγετε dateofcall. Οταν τρεχω το ερωτημα θέλω να μου βγάζει μονο τις σημερινές ημερομηνίες στο dateofcall. select curdate() from table.. Σωστά το γράφω ? έτσι έχει σύνταξη η curdate? Πως θα το συντάξω σωστά? κανείς?? Πως συντάσετε αυτη η ρουφιάνα η curdate? Υπάρχουν αρκετοί τρόποι για να σου φέρει τις εγγραφές της ημέρας. Οι συναρτήσεις CURRENT_TIMESTAMP, GETDATE(), {fn NOW()} Αλλά και οι 3 σου επιστέφουν όχι μόνο την τρέχουσα ημέρα αλλά και την τρέχουσα ώρα. Δηλαδή αν εσυ ζητήσεις το getdate θα σου γυρίσει 05/07/2011 14:59:00 εσύ θες όμως μόνο το 05/07/2011 γιαυτό θα χρειάστει και κάποιο convert όταν θα καλέσεις την function. Οπότε έχουμε και λέμε : Ο πινακάς σου λέγεται dateofcall και ας υποθέσουμε οτί το πεδίο του πινακά σου βάση το οποίο θέλεις να ψάξεις είναι το Field1 οπότε η σύνταξη που χρειάζεται είναι η παρακάτω : SELECT * FROM dateofcall WHERE Field1 >= CONVERT(VARCHAR(10),GETDATE(),111) Ελπίζω αυτό να ήθελες και να μην κατάλαβα λάθος.
defacer Δημοσ. 5 Ιουλίου 2011 Δημοσ. 5 Ιουλίου 2011 Ρε παιδια εχω μπερδευτεί! Εχω εναν πίνακακ που λέγετε dateofcall. Οταν τρεχω το ερωτημα θέλω να μου βγάζει μονο τις σημερινές ημερομηνίες στο dateofcall. select curdate() from table.. Σωστά το γράφω ? έτσι έχει σύνταξη η curdate? Πως θα το συντάξω σωστά? κανείς?? Πως συντάσετε αυτη η ρουφιάνα η curdate? Δε μας λες τι columns έχει ο πίνακας. Δε μας λες ποιό είναι το query που δίνεις. Δε μας περιγράφεις ούτε καν τι θες να κάνεις ("θέλω να μου βγάζει μονο τις σημερινές ημερομηνίες στο dateofcall" ==> ακούγεται σα διαφήμιση Wind, όχι σα διατύπωση ζητούμενου). Πραγματικά περιμένεις να πάρεις χρήσιμη απάντηση; Η CURDATE() δεν έχει τίποτα ιδιαίτερο στη σύνταξη. Οι συναρτήσεις CURRENT_TIMESTAMP, GETDATE(), {fn NOW()} Αλλά και οι 3 σου επιστέφουν όχι μόνο την τρέχουσα ημέρα αλλά και την τρέχουσα ώρα. Δηλαδή αν εσυ ζητήσεις το getdate θα σου γυρίσει 05/07/2011 14:59:00 εσύ θες όμως μόνο το 05/07/2011 γιαυτό θα χρειάστει και κάποιο convert όταν θα καλέσεις την function. Αν το πεδίο του πίνακα είναι DATETIME δε χρειάζεσαι κανένα conversion, τα κάνει μόνη της η database. Αν είναι INT και αποθηκεύει timestamps τότε πάλι δε χρειάζεται conversion, απλά χρησιμοποιείς την UNIX_TIMESTAMP() για να πάρεις απευθείας μια τιμή συγκρίσιμη μ' αυτές του πίνακα.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.