Sql Order by Date help

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

sdem
Δημοσιεύσεις: 21
Εγγραφή: 14 Απρ 2010 19:06

Sql Order by Date help

Δημοσίευση από sdem » 29 Απρ 2010 13:33

korgr έγραψε:
sdem έγραψε: Άσχετος δεν είναι αυτός που ρωτάει άσχετος είναι αυτός που τα νομίζει ότι τα ξέρει όλα.
Οχι φιλε μου
Ασχετος ειναι αυτος που ρωταει. Απλα δεν ειναι κακο που ειναι ασχετος. Ολοι απο ασχετοι ξεκινησαμε.
Αν βρεις εστω και εναν απο τους καλυτερους καθηγητες σου, να αξιζει το 1/10 του fafos θα εχεις κανει την ανακαλυψη του αιωνα!
Καταρχήν δεν μίλησε κανένας ότι υπάρχει καθηγητής και έχεις παρερμηνεύσει την έννοια του Forum, εδώ δεν είναι επίδειξη γνώσεων.
Το μόνο που έλαβα από τον κύριο που θεωρείς τον "καλύτερο" είναι κακόβουλες παρατηρήσεις και γι'αυτό ήθελα να το κόψω νωρίς.
Η γνώσεις του φάνηκαν.
fafos έγραψε: phgaine mathe pos douleuei h php kai h mysql kai meta kane analysh ths vashs sou...

Σε θέμα που αφορά βάση δεδομένων MySql είναι υποχρεωτικό να ξέρεις php καθώς δεν υπάρχουν άλλες γλώσσες.

Ο επαγγελματισμός και οι γνώσεις φάνηκαν από τις απαντήσεις που έδωσε ο dva_dev τον οποίο ευχαριστώ πολύ για τον χρόνο του.

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από korgr » 29 Απρ 2010 15:47

οκ οτι πεις, αλλα προσεξε μην εγκλωβιστεις σε μια κατασταση οπου θα χρειαζεσαι παντα εναν dva_dev

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από dva_dev » 29 Απρ 2010 16:04

@sdem: Τελικά, για να μου λυθεί κι εμένα η απορία, τα xronos, mhnas,hmera τα έδωσε έτσι κάποιος καθηγητής;

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Sql Order by Date help

Δημοσίευση από fafos » 29 Απρ 2010 16:29

Agaphte sdem,

eimai kai ego mazi sou sto oti o dva_dev einai pio epaggelmatias kai me megalyteres gnoseis apo mena kai den me endiaferei o antagonismos se auto to kommati ths zohs...

ekei pou diafono einai os pros to kakoboulos... mphkes edo mesa me thn agonia sou an mporesei kapoios na sou lysei to provlhma (giati esy 10 xronia na paleueis den mporeis na to lyseis)..
katalavaino thn agonia sou na paradoseis thn ergasia sou pano se ena antikeimeno sto opoio den exeis tis aparaithtes gnoseis gia dikous sou logous (eite giati den to exeis peiasei to thema eite giati to "kolovarages" olh thn xronia klp klp)...

Otan ekana thn erothsh peri kathighth vasika htan gia na se vohthiso, alla esy san ponhridhs pou eisai mas petakses ena oti "den einai to thema mas" eno sthn pragmatikothta opos vlepeis kai sthn synexeia olo to thema tou provlhmatos einai auto akrivos pou me emmeso h ammeso tropo prospathisa na sou peraso..

vevea an vrhkes thn lysh sou siga mhn katseis na mas apanthseis.. to poly poly na mpeis me allo username sto epomeno provlhma kai na rothseis kati allo.. alla otan vgeis sthn piatsa den tha exeis enan dva_dev apo dipla na sou lynei ta provlhmata.. kai pistepse me, auto provlhma einai plhmellhma mprosta sta kakourghmata pou tha synanthseis ston alhthino kosmo..


korgr.. pou na steilo thn gkiosa gia ta kala sou logia? :lol:

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από korgr » 29 Απρ 2010 19:13

fafos έγραψε: korgr.. pou na steilo thn gkiosa gia ta kala sou logia? :lol:
Και πανω που ειχα αρχισει να ανησυχω :lol:


Κατι που θελω να προσθεσω, ειναι πως με γνωμωνα την οικονομικη κριση, ολο και περισσοτεροι ελ. επαγγελματιες που θα τα βρισκουν σκουρα θα αναζητησουν εργασια σε μεγαλες εταιριες. Εκει γενναται το ερωτημα.
Ολη αυτη την φουρνια, που λογω του οτι αναγκαστηκε να ελισσεται στην δικη της επιχειρηση, εχει μαθει πολυ περισσοτερα πραγματα απο εναν κλασσικο υπαλληλο του 8ωρου, (ποσο μαλλον αν μιλησουμε για τελειοφοιτους που αναζητουν την πρωτη τους δουλεια), ποιος θα μπορεσει να την ανταγωνιστει?

Πλεον θα φτασουμε να γινονται απολυσεις, με σκοπο να προσλαμβανονται καλυτεροι αντικαταστατες αφου θα υπαρχουν διαθεσιμοι στην αγορα.

Οποτε το προβλημα θα χειροτερεψει αν συνεχιζουμε να τα "γραφουμε στα @@ μας" οσο ειμαστε φοιτητες! Μιλαω γενικα γιατι εγω μονο φοιτητης δεν ειμαι :lol:

sdem
Δημοσιεύσεις: 21
Εγγραφή: 14 Απρ 2010 19:06

Sql Order by Date help

Δημοσίευση από sdem » 29 Απρ 2010 19:43

dva_dev έγραψε:@sdem: Τελικά, για να μου λυθεί κι εμένα η απορία, τα xronos, mhnas,hmera τα έδωσε έτσι κάποιος καθηγητής;
Αφού θέλετε να το αναλύσουμε θα το κάνουμε.
Έφτιαξα την ημερομηνία γιατί πίστευα ότι εξυπηρετούσε καλύτερα σε κάποια πράγματα.
Η εργασία αφορά ένα κομμάτι στον επαγγελματικό μου χώρο και δεν υπάρχει καθηγητής.

Θα ήθελα πραγματικά να καταλάβω τον σκοπό της ερώτησης:
fafos έγραψε:piois kathighths edose thn hmeromhnia se diaforetika pedia sthn vash? (hmera, mhnas, xronos)
καθώς ήταν εκτός και θέματος και με στόχο να δημιουργηθούν εντυπώσεις.

Όπως και έγινε:
korgr έγραψε: Αν βρεις εστω και εναν απο τους καλυτερους καθηγητες σου, να αξιζει το 1/10 του fafos θα εχεις κανει την ανακαλυψη του αιωνα!
dva_dev έγραψε:...τα xronos, mhnas,hmera τα έδωσε έτσι κάποιος καθηγητής;
Ο γραπτός λόγος μπορεί να είναι εύκολα παρεξηγήσιμος για αυτό και το διευκρίνισα με το:
sdem έγραψε: Το "δεν είναι αυτό θέμα μας" πήγαινε στο "δεν μας αφορά αν το έκανε καθηγητής" και όχι στον τρόπο που πρέπει να χρησιμοποιήσεις την ημερομηνία στο table.
και έλαβα μία πολύ άσχημη αντίδραση η οποία μου δείχνει μία κακόβουλη πρόθεση.

Και στην πορεία επαναλαμβάνεται:
fafos έγραψε: ...alla esy san ponhridhs pou eisai mas petakses ena oti "den einai to thema mas" eno sthn pragmatikothta opos vlepeis kai sthn synexeia olo to thema tou provlhmatos einai auto akrivos pou me emmeso h ammeso tropo prospathisa na sou peraso..
Το οποίο μου γεννά το ερώτημα, διαβάζεις πρώτα αυτά που σου γράφει ο συνομιλητής σου πριν απαντήσεις?

Εμένα μου κάνει για αγένεια να αποκαλείς κάποιον "άσχετο και θρασύ" χωρίς να με ξέρεις σε προσωπικό επίπεδο.

Ένα forum στοχεύει σε ένα συγκεκριμένο αμοιβαίο στόχο την προσωπική εξέλιξη δίνοντας και παίρνοντας πληροφορίες. Οι ερωτήσεις που θέτονται είναι συγκεκριμένες. Έτσι συνηθίζεται τουλάχιστον.

Και τέλος fafo για να να σου λύσω το πρόβλημα, από τότε που τελείωσα την σχολή και βγήκα στην πιάτσα έχουν περάσει αρκετά χρόνια και έχω επιβιώσει.


Υ.Γ
Μάθε να διαβάζεις πριν απαντάς δεν κάνει κακό.
fafos έγραψε: vevea an vrhkes thn lysh sou siga mhn katseis na mas apanthseis..
Έχω απαντήσει 5 post πιο πάνω
sdem έγραψε: Ο επαγγελματισμός και οι γνώσεις φάνηκαν από τις απαντήσεις που έδωσε ο dva_dev τον οποίο ευχαριστώ πολύ για τον χρόνο του.
sdem έγραψε: .. to poly poly na mpeis me allo username sto epomeno provlhma kai na rothseis kati allo..
Ήρθα για να μείνω είτε το θέλεις είτε όχι.

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Sql Order by Date help

Δημοσίευση από fafos » 29 Απρ 2010 20:15

arxiko post:
sdem έγραψε:Καλησπέρα,
έχω μία εργασία και έχω φάει ένα κόλλημα.


Το ερώτημα είναι "Εμφανίστε μόνο το τελευταίο εξώφυλλο χρονολογικά της εφημερίδας του εκδότη που έχει χαρακτηρισμό 1 και όλα τα αποτελέσματα να είναι χρονολογικά)
teleutaio post:
Η εργασία αφορά ένα κομμάτι στον επαγγελματικό μου χώρο και δεν υπάρχει καθηγητής.

tipota allo...

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από Banavas » 29 Απρ 2010 22:19

korgr έγραψε: Ολη αυτη την φουρνια, που λογω του οτι αναγκαστηκε να ελισσεται στην δικη της επιχειρηση, εχει μαθει πολυ περισσοτερα πραγματα απο εναν κλασσικο υπαλληλο του 8ωρου, (ποσο μαλλον αν μιλησουμε για τελειοφοιτους που αναζητουν την πρωτη τους δουλεια), ποιος θα μπορεσει να την ανταγωνιστει?

Πλεον θα φτασουμε να γινονται απολυσεις, με σκοπο να προσλαμβανονται καλυτεροι αντικαταστατες αφου θα υπαρχουν διαθεσιμοι στην αγορα.

Οποτε το προβλημα θα χειροτερεψει αν συνεχιζουμε να τα "γραφουμε στα @@ μας" οσο ειμαστε φοιτητες! Μιλαω γενικα γιατι εγω μονο φοιτητης δεν ειμαι :lol:
Εκτός από απολύσεις θα γίνουν και μειώσεις στους μισθούς, οπότε από το να προτιμήσεις να πάς υπάλληλος για ψίχουλα είναι καλύτερα να προσπαθήσεις να κρατήσεις την επιχείρηση σου. Εκτός εάν δεν μπορείς να ζήσεις την οικογένειά σου οπότε μάλλον θα τα κάνεις και τα δύο.
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από dva_dev » 30 Απρ 2010 02:46

Αφού δεν αφορά κάποια άσκηση λοιπόν, μπορείς να κάνεις ότι αλλαγές θέλεις.
Εχω να κάνω τις εξής προτάσεις:
1) Η σχεδίαση, μου φαίνεται προβληματική. Καλύτερα κάνε τα τρία πεδία ένα (τύπου ημερομηνία), και βάλε και index πάνω σε αυτό το πεδίο. Θα γλυτώσεις όλες αυτές τις DATE(CONCAT_WS()) functions που γονατίζουν το query.
2) Αν χρειαστείς τις ημέρα, μήνα, έτος, υπάρχουν functions που παίρνουν τη σγκεκριμένη πληροφορία από την ημερομηνία.
3) Μια άλλη αλλαγή που προτείνω είναι να μην χρησιμοποιήσεις καν αυτό το query όπως είναι. Φτιάξε view στη βάση με το subquery, ώστε κάποια κομμάτια να μην χρειάζεται να γίνεται parse κάθε φορά από τη mysql και χρησιμοποίησέ το.
4) Αν είναι τώρα πολλά τα σημεία που αλλού χρειάζεσαι την ημερομηνία ολόκληρη και αλλού σπασμένα τα κομμάτια της και βλέπεις ότι καθυστερεί η χρήση των functions της mysql, (δεν ξέρω τι "ιδιότροπες" απαιτήσεις μπορεί να έχει η εφαρμογή σχετικά με την ταχύτητα) ίσως δεν είναι και τόσο άσχημη ιδέα να τα έχεις και τα δύο (και σπασμένη την ημερομηνία σε τρία πεδία όπως την έχεις τώρα αλλά και ολόκληρη σε άλλο πεδίο). Μόνο θα πρέπει να είσαι πιο προσεκτικός στις ενημερώσεις.

Βλέπεις και μόνος σου, ότι διαφορετική μπορεί είναι η "σωστή" απάντηση όταν πρόκειται για κάποια σχολική άσκηση (το query που σου έστειλα), και διαφορετική όταν πρόκειται για κάποιο real project (οι προτάσεις παραπάνω). Είναι διαφορετικές οι απαιτήσεις και η ευελιξία που έχεις για να αλλάξεις ότι νομίζεις πως είναι απαραίτητο για να έχεις καλύτερο αποτέλεσμα. Ακόμα και το να διπλοκρατάς πληροφορίες σε 500 σημεία για να έχεις μεγαλύτερη ταχύτητα ανάκτησης μπορεί να είναι απαραίτητο, που αν ήταν σχολική εργασία θα σου έφερνε ο καθηγητής την 3η κανονική μορφή στο κεφάλι.

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από cordis » 30 Απρ 2010 23:47

sdem έγραψε: Αφού θέλετε να το αναλύσουμε θα το κάνουμε.
ο προγραμματισμός πάντα ξεκινάει με την ανάλυση ;)
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

sdem
Δημοσιεύσεις: 21
Εγγραφή: 14 Απρ 2010 19:06

Sql Order by Date help

Δημοσίευση από sdem » 01 Μάιος 2010 02:46

dva_dev σε ευχαριστώ για τις απαντήσεις, είχα κάποιες υποχρεώσεις γι'αυτό άργησα να απαντήσω.
Τελικά έκανα συνδυασμό των ημερομηνιών και σπασμένη και σε ένα πεδίο με μορφή timestamp.
Παίζει ρόλο στην βάση απο θέμα ταχύτητας αν θα είναι date ή timestamp ή είναι αμελητέος ο χρόνος?

Εχω σπάσει σε κομμάτια αυτο που μου εστειλες για να το μελετήσω διεξοδικά καθώς και να σκεφτώ τρόπους βελτίωσης.

Κατά την έρευνα και την μελέτη έπεσα πάνω σε Stored procedures link και είχα το ερώτημα μετά την βελτίωση του query θα άξιζε από θέμα ταχύτητας ή οργάνωσης των βάσεων ή θα ήταν περιττό?
[edit: βελτίωση συνταξης κειμενου]

Άβαταρ μέλους
cordis
Administrator, [F|H]ounder, [C|S]EO
Δημοσιεύσεις: 27626
Εγγραφή: 09 Οκτ 1999 03:00
Τοποθεσία: Greece
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από cordis » 02 Μάιος 2010 22:10

δες μερικά για timestamp vs datetime
http://www.xaprb.com/blog/2006/06/12/be ... -in-mysql/
http://dbscience.blogspot.com/2008/08/c ... etime.html
http://www.dbtuna.com/article.asp?id=36

τελικά είναι άλλο το αποτέλεσμα από αυτό που φανταζόμουν.. το datetime είναι γρηγορότερο.. :p

τα Stored procedures δε κατάλαβα πως το εννοείς..
Δεν απαντάω σε προσωπικά μηνύματα με ερωτήσεις που καλύπτονται από τις ενότητες του forum. Για ο,τι άλλο είμαι εδώ για εσάς.
- follow me @twitter

sdem
Δημοσιεύσεις: 21
Εγγραφή: 14 Απρ 2010 19:06

Sql Order by Date help

Δημοσίευση από sdem » 02 Μάιος 2010 23:48

cordis έγραψε:δες μερικά για timestamp vs datetime
http://www.xaprb.com/blog/2006/06/12/be ... -in-mysql/
http://dbscience.blogspot.com/2008/08/c ... etime.html
http://www.dbtuna.com/article.asp?id=36

τελικά είναι άλλο το αποτέλεσμα από αυτό που φανταζόμουν.. το datetime είναι γρηγορότερο.. :p

τα Stored procedures δε κατάλαβα πως το εννοείς..
Πολύ σωστά, η DATETIME τελικά είναι καλύτερη από πολλές απόψεις. Η διαφορά της πέρα απο την ταχύτητα είναι ότι η TimeStamp έχει εύρος από: 1970-01-01 00:00:00 to 2037-12-31 23:59:59 ενώ η DATETIME από 1000-01-01 00:00:00 to 9999-12-31 23:59:59
(Η timestamp δεν θα δουλέψει στην περίπτωση πχ που φτιάξει κάποιος γενεαλογικό δέντρο :) ) περισσότερα .
Παρόλα αυτά η στην περίπτωση που δεν θέλει κάποιος "ώρα" η ταχύτερη είναι η DATE.
note: (Δεν φτιάχνω καμία εξειδικευμένη εφαρμογή που να με απασχολεί τόσο η ταχύτητα. Απλά μου αρέσει ότι φτιάχνω να το κάνω όσο καλύτερα μπορώ με σκοπό την γνώση. )

Τώρα αυτά που έχω διαβάσει για τις sored proceadures είναι ότι πρόκειται για μία διαδικασία που αποτελείται από SQL εντολές. Το κύριο πλεονέκτημα είναι ότι αποθηκεύεται στον database server χωρίς κάποια ενδιάμεση επικοινωνία με το πρόγραμμα εφαρμογής.

Πιο απλά από ότι κατάλαβα εγώ παίζει τον ίδιο ρόλο (στην λογική) που κάνει μία εντολή function αλλά με εντολές από querys
Δηλ.

Κώδικας: Επιλογή όλων

mysql> create procedure news_time(IN input_day DATE)
BEGIN
DECLARE current_day DATE;
SET current_day=CURDATE();
if (input_day>current_day)
then select 'future';
elseif(input_day=current_day)
then select 'present';
else select 'past';
end if;
END$
Θέλω αρκετό διάβασμα ακόμη.
Για να έχουν νόημα αυτά θα πρέπει πρώτα να "κατανοήσω" εις βάθος το query που μου έστειλε ο dva_dev (η index όντος πολύ καλή λύση και πιστεύω ότι είναι ιδανική στην δική μου περίπτωση, ευχαριστώ)...στα επόμενα δεν έχω προλάβει να περάσω ακόμα.
Είμαι πολύ αργός αλλά καθότι έχω ξεκινήσει περίπου δύο εβδομάδες με το κομμάτι των βάσεων δεδομένων και σιγά σιγά να λύνω μόνος μου τις πολλές απορίες.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Sql Order by Date help

Δημοσίευση από dva_dev » 03 Μάιος 2010 00:10

sdem έγραψε:Τελικά έκανα συνδυασμό των ημερομηνιών και σπασμένη και σε ένα πεδίο με μορφή timestamp.
Για μένα το timestamp είναι μια "εφεύρεση" του unix. Για τις βάσεις δεδομένων (παρότι η mysql το υποστηρίζει), και στην php διευκολύνει η υποστήριξη, προτείνω κυρίως datetime ή σκέτο date για τη χρήση που αναφέρεις, αφού έχουν φτιαχτεί ειδικά για να αποθηκεύουν ημερομηνίες. Αν σε βολεύει φυσικά το timestamp δεν θα σου πω μην το χρησιμοποιείς.
sdem έγραψε:Εχω σπάσει σε κομμάτια αυτο που μου εστειλες για να το μελετήσω διεξοδικά καθώς και να σκεφτώ τρόπους βελτίωσης.
Η πρώτη και μεγαλύτερη βελτίωση που μπορείς να κάνεις είναι να βάλεις indexes και να χρησιμοποιήσεις το πεδίο ημερομηνίας αντί της function που δημιουργεί ημερομηνία από τα ημέρα, μήνα, έτος. Αυτό είναι που θα απογειώσει τη βάση σου.
sdem έγραψε:Κατά την έρευνα και την μελέτη έπεσα πάνω σε Stored procedures...μετά την βελτίωση του query θα άξιζε από θέμα ταχύτητας ή οργάνωσης των βάσεων ή θα ήταν περιττό?
Αυτό είναι ένα θέμα που σηκώνει μεγάλη συζήτηση. Υπάρχουν και θετικά στοιχεία και αρνητικά, αναλόγως πως τις χρησιμοποιείς και αν το παρακάνεις ή όχι. Με μια κουβέντα θα έλεγα ότι πάντα αξίζει να κάνεις κάτι, είτε είναι μια function, είτε ένα view, είτε μια stored procedure.

Εστω ότι έχεις το ακόλουθο query:

Κώδικας: Επιλογή όλων

SELECT calcDate, eksofilo_ef
FROM efhmerida INNER JOIN
(
       SELECT MAX(DATE(CONCAT_WS('-',`xronos`,`mhnas`,`hmera`))) calcDate, ekdotis_id
       FROM efhmerida, ekdotis
       WHERE efhmerida.ekdotis_id=ekdotis.id AND xarakt_ekdoti = 1
       GROUP BY ekdotis_id
) tmp ON (calcDate = DATE(CONCAT_WS('-',`xronos`,`mhnas`,`hmera`))
          AND tmp.ekdotis_id = efhmerida.ekdotis_id)
ORDER BY calcDate DESC
Δεν θα γινόταν πιο απλό αν έκανες ένα view με το subquery:

Κώδικας: Επιλογή όλων

CREATE OR REPLACE VIEW `tmp` AS
SELECT MAX(DATE(CONCAT_WS('-',`xronos`,`mhnas`,`hmera`))) calcDate, ekdotis_id
FROM efhmerida, ekdotis
WHERE efhmerida.ekdotis_id=ekdotis.id AND xarakt_ekdoti = 1
GROUP BY ekdotis_id
και μετά τροποποιούσες το αρχικό query σε αυτό:

Κώδικας: Επιλογή όλων

SELECT calcDate, eksofilo_ef
FROM efhmerida INNER JOIN tmp
ON (calcDate = DATE(CONCAT_WS('-',`xronos`,`mhnas`,`hmera`)) AND tmp.ekdotis_id = efhmerida.ekdotis_id)
ORDER BY calcDate DESC
Επίσης δεν θα γινόταν ακόμα πιο απλό το query αν αντικαταστήσεις το

Κώδικας: Επιλογή όλων

DATE(CONCAT_WS('-',`xronos`,`mhnas`,`hmera`))
με μια function MyCreateDate σαν την

Κώδικας: Επιλογή όλων

CREATE FUNCTION MyCreateDate(pDay INT, pMonth INT, pYear INT) RETURNS date
RETURN DATE(CONCAT_WS('-',pYear, pMonth, pDay))
ώστε να έχεις τελικά:

Κώδικας: Επιλογή όλων

CREATE OR REPLACE VIEW `tmp` AS
SELECT MAX(MyCreateDate(`hmera`,`mhnas`,`xronos`)) calcDate, ekdotis_id
FROM efhmerida, ekdotis
WHERE efhmerida.ekdotis_id=ekdotis.id AND xarakt_ekdoti = 1
GROUP BY ekdotis_id
και

Κώδικας: Επιλογή όλων

SELECT calcDate, eksofilo_ef
FROM efhmerida INNER JOIN tmp
ON (calcDate = MyCreateDate(`hmera`,`mhnas`,`xronos`) AND tmp.ekdotis_id = efhmerida.ekdotis_id)
ORDER BY calcDate DESC
Βέβαια αν έχεις πεδίο ημερομηνίας (ας το πούμε fulldate) τότε θα ήταν ακόμα πιο απλά τα πράγματα και πιο γρήγορα αφού ακόμα και το

Κώδικας: Επιλογή όλων

...calcDate = MyCreateDate(`hmera`,`mhnas`,`xronos`)...
θα γινόταν

Κώδικας: Επιλογή όλων

...tmp.fulldate = efhmerida.fulldate...
Τώρα αυτό το query αν γίνει μια stored procedure π.χ. MySP1 θα απλοποιούσε τον php κώδικα σου αφού θα είχες να εκτελέσεις μόνο "call MySP1()".
Ακόμα και αν χρησιμοποιείς τη stored procedure αυτή σε 100 σημεία στον php κώδικα σου και κάποια στιγμή διαπιστώσεις ότι δεν επιστρέφονται τα σωστά αποτελέσματα, δεν θα χρειαστεί να πειράξεις τίποτα από τον php κώδικα. Αυτό που θα πρέπει να διορθώσεις είναι το σημείο στη database που δεν δουλεύει σωστά.

Ισως στην περίπτωση σου όλα αυτά να είναι too much, να σου αρκούσε να φτιάξεις μια stored procedure μόνο με το αρχικό query, ή απλώς μόνο indexes, και όλα τα υπόλοιπα να είναι απλώς επιπλέον κόπος που δύσκολα θα έχει να δώσει κάτι παραπάνω.

Ηθελα απλώς να δείξω ότι υπάρχουν πολλά που μπορούν να γίνουν τα οποία έχουν να προσφέρουν, είτε στην ταχύτητα, είτε στην απλοποίηση του κώδικα, είτε στην καλύτερη οργάνωση. Δεν υπάρχει όμως κανόνας που να λέει, κάνε αυτό ή μην το κάνεις. Υπάρχει μια χρυσή τομή, ανάλογα με τις γνώσεις, την εμπειρία, τη θέληση που έχει ο καθένας.

Μερικά links για τα υπέρ, τα κατά, πότε πρέπει να χρησιμοποιείται απλή sql και πότε είναι καλύτερα ένα view, μια function ή μια stored procedure:
http://www.sqlbook.com/SQL-Server/Why-u ... es-41.aspx
http://codebetter.com/blogs/jeremy.mill ... 45450.aspx
http://databases.aspfaq.com/database/sh ... ction.html
http://weblogs.asp.net/fbouma/archive/2 ... 38178.aspx
http://ifacethoughts.net/2007/11/14/to- ... rocedures/
http://articles.techrepublic.com.com/51 ... 66837.html

Και το google φυσικά

sdem
Δημοσιεύσεις: 21
Εγγραφή: 14 Απρ 2010 19:06

Sql Order by Date help

Δημοσίευση από sdem » 03 Μάιος 2010 00:17

korgr έγραψε:οκ οτι πεις, αλλα προσεξε μην εγκλωβιστεις σε μια κατασταση οπου θα χρειαζεσαι παντα εναν dva_dev
Επίσης korgr πιστεύω ότι όλοι έχουμε το δικαίωμα να χρειαζόμαστε ένα dva_dev να μας δίνει τα φώτα του. :D
Έτσι για να θυμηθούμε τα "παλιά" και να γελάσουμε, να σου θυμίσω μία εβδομάδα μετά την εγγραφή σου στο forum τις συμβουλές που έδινες για την ημερομηνία.
korgr έγραψε:Στις: 13 Οκτ 2008 19:35
Αφού δεν χρησιμοποίησες από την αρχή τύπο filed "date" ή δεν φρόντισες να αποθηκεύεις την ημερομηνία σε 3 πεδία (year - month - day), θα πρέπει τουλάχιστον να μετατρέψεις με ένα script την μορφή των δεδομένων του πεδίου σου.
Αν είναι σταθερό το format, δηλαδή τα 4 πρώτα ψηφία= έτος, τα 2 επόμενα= μήνας και τα 2 τελευταία= ημέρα
dva_dev έγραψε:Στις: 13 Οκτ 2008 21:41
Μην ανακαλύπτεις τον τροχό από την αρχή. To date έχει φτιαχτεί για να κρατάει ημερομηνίες...
http://www.freestuff.gr/forums/viewtopic.php?t=38903
Καλά λένε μεγάλη μπουκιά φάε, μεγάλη κουβέντα μη λες :P

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες