Ζηταω να δω αποτελεσματα με βαση τους εξης συνδυασμους απο 3 dropdwon menus.
Κώδικας:name = request.args.get('name') month = request.args.get('month') year = request.args.get('year') if year: cur.execute( '''SELECT * FROM jobs WHERE YEAR(lastvisit) = %s ORDER BY lastvisit ASC''', year ) if name: cur.execute( '''SELECT * FROM jobs WHERE clientID = (SELECT id FROM clients WHERE name = %s) and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (name, year) ) elif month: if name: cur.execute( '''SELECT * FROM jobs WHERE clientID = (SELECT id FROM clients WHERE name = %s) and MONTH(lastvisit) = %s and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (name, month, year) ) else: cur.execute( '''SELECT * FROM jobs WHERE MONTH(lastvisit) = %s and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (month, year) )
year
name + year
month + year
name + month + year
Εχω προσπαθησει να το γραψω με 10002 τροπους αλλα παλι δεν τα πετυχιανω και τα 4 αποτελεσματα
Σε αυτο που εχω παραθεσει εαν ο χρηστης επιλεξει απο το dropdown menu mono το year η πρωτη cur.execute διενι αδειο συνολο δεδομενων ενω αυτα υπαρχουν.
ΚΑθως επισης στο name + month + year γινεται επιστροφη δεδομενων ολου του χρονου αντι για τον συγκεκριμενο μηνα.
Μπορειτε να με βοηθησετε να το γραψω σωστα?
Εμφάνιση 1-3 από 3
-
11-02-19, 21:02 Προβλημα σε λογικη μιας if() #1What is now proved was at first only imagined!
-
11-02-19, 21:22 Απάντηση: Προβλημα σε λογικη μιας if() #2
Γιατί δεν χτίζεις δυναμικά το query ανάλογα με τις τιμές των μεταβλητών;
Το άλλο που μπορείς να κάνεις είναι να υπάρχουν όλα τα columns στο query αλλά το where clause του κάθε column αν δεν έχει δοθεί τιμή από το menu να επιστρέφει όλα τα rows.
-
12-02-19, 00:28 Απάντηση: Προβλημα σε λογικη μιας if() #3
Μα δυναμικα νομιζω το χτιζω.
Μπορεις να μου το γραψεις σε κωδικα να δω πως το εννοεις?
- - - Updated - - -
Κώδικας:if name and month and year: cur.execute( '''SELECT * FROM jobs WHERE clientID = (SELECT id FROM clients WHERE name = %s) and MONTH(lastvisit) = %s and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (name, month, year) ) print( 1 ) elif name and year: cur.execute( '''SELECT * FROM jobs WHERE clientID = (SELECT id FROM clients WHERE name = %s) and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (name, year) ) print( 2 ) elif month and year: cur.execute( '''SELECT * FROM jobs WHERE MONTH(lastvisit) = %s and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (month, year) ) print( 3 ) elif year: cur.execute( '''SELECT * FROM jobs WHERE YEAR(lastvisit) = %s ORDER BY lastvisit ASC''', year ) print( 4 )
Its almost correct except the fast that the last "elif" never gets executed. Even if 'month=0', which mean no selection of month still this clause 'elif month and year:' always executes instead of the last one.What is now proved was at first only imagined!
Bookmarks