Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problem with and if() logic
#1
		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.

Please can someone correct this and explain why?
Thank you!
Quote
#2
name = False
month = 0
year = 2019

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 )
Output:
> python eggs.py 4
I don't get the same output as you, so I'd suggest making sure that your variables actually contain what you think they do.
Quote
#3
		if name and month != '0' and year != '0':
			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) )

		elif name and year != '0':
			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 != '0' and year != '0':
			cur.execute( '''SELECT * FROM jobs WHERE MONTH(lastvisit) = %s and YEAR(lastvisit) = %s ORDER BY lastvisit DESC''', (month, year) )

		elif year:
			cur.execute( '''SELECT * FROM jobs WHERE YEAR(lastvisit) = %s ORDER BY lastvisit ASC''', year )
Actually when they contained '0', which is a string which is soemthing and its different from 0 which is like sayif if month is not None.
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  Logic is not working as it should work Harkishan 1 207 Nov-16-2018, 10:17 AM
Last Post: wavic
  Logic of using floor division and modulus for a different variable at different time SB_J 2 235 Nov-01-2018, 07:25 PM
Last Post: SB_J
  Why is my crawler not recording 404s I think it may be an error in the logic RickyWilson 3 642 Dec-18-2017, 12:57 PM
Last Post: Larz60+
  Logic error when comparing randomly generated integers SadoDeomeoon 5 1,492 Jun-05-2017, 02:38 PM
Last Post: SadoDeomeoon
  Strange logic! :) alsimm 10 3,055 May-19-2017, 10:10 PM
Last Post: volcano63
  Number logic problem m1xzg 13 3,512 Oct-23-2016, 09:36 PM
Last Post: m1xzg
  Logic to convert an integer to YEAR / MONTH hugobaur 9 2,307 Oct-18-2016, 11:58 AM
Last Post: hugobaur

Forum Jump:


Users browsing this thread: 1 Guest(s)