--- ZSQLExtend/ZSQLExtend.py 2007/04/20 06:36:01 1.114 +++ ZSQLExtend/ZSQLExtend.py 2007/04/20 08:33:17 1.115 @@ -639,7 +639,7 @@ class ZSQLExtendFolder(Folder,Persistent return 1 return 0 - def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_storename=None): + def ZSQLMultiSearch(self,_table,_searchField,_value,_idField,_additionalStatement="",_select=None,_subselectAddition="",_storename=None): """ Durchsucht in einer Tabelle "table" die Spalte "searchfield" nach dem allen Vorkommnissen von Worten in value und gibt alle Werte mit gleichem id field zurŸck, d.h. es wird die "und" suche Ÿber mehrere Eintrsege in einer @@ -664,17 +664,16 @@ class ZSQLExtendFolder(Folder,Persistent if not _select: _select=_idField - queries.append("select %s from %s %s where lower(%s) like '%%%s%%'"%(_select,_table,_additionalStatement,_searchField,splitted[0].lower())) + query="select %s from %s %s where lower(%s) like '%%%s%%'"%(_select,_table,_additionalStatement,_searchField,splitted[0].lower()) - if len(splitted)>1: + if len(splitted)>1: # mehr als ein Wort + query+=" and %s in"%_idField # dann einschraenken for v in splitted[1:]: - queries.append("select %s from %s where lower(%s) like '%%%s%%'"%(_idField,_table,_searchField,v.lower())) + queries.append("select %s from %s %s where lower(%s) like '%%%s%%'"%(_idField,_table,_subselectAddition,_searchField,v.lower())) - q=" and %s in ("%_idField - query=q.join(queries) # nun baue sie zusammen - for i in range(len(queries)-1): - query+=")" #noch die klammern schliessen + intersect=" intersect ".join(queries) # nun baue sie zusammen + query+="(%s)"%intersect logging.info("ZSQLSimple: %s"%query)