You sure that that your "on" are between tables with id equals?

Likely are happening cartesian product .. I think

Em quinta-feira, 1 de dezembro de 2016 03:08:02 UTC-3, Iago Pinal escreveu:
>
> Hello,
> I am using an SQLFORM.grid to interact with a database. When I use the 
> LEFT JOIN with this form the search fields in the SQLFORM.grid repeats the 
> search fields (see screen capture).
>
> Did you any of you have any clue why this could be happening and how to 
> solve it?
>
> Thank you
>
> Iago
>
>
> *#MODEL*
> db = DAL('sqlite://storage.myositis_db')
>
> db.define_table('d_dx',
>     Field('dx_code', 'string', label='Diagnosis code'),
>     Field('dx_descr', 'string', label='Diagnosis'))
>
> db.define_table('d_subdx',
>     Field('subdx_code', 'integer', label='Subdiagnosis code'),
>     Field('subdx_descr', 'string', label='Subdiagnosis'))
>
> db.define_table('d_atb',
>     Field('atb_code', 'integer', label='Antibody code', notnull=True, 
> unique=True),
>     Field('atb_descr', 'string', label='Antibody', notnull=True, 
> unique=True))
>
> db.define_table('general',
>     Field('general_id', 'id', label='ID', notnull=True, unique=True),
>     Field('mrn', 'string', label='MRN', notnull=True, unique=True),
>     Field('first_name', 'string'),
>     Field('last_name', 'string'),
>     Field('serum_number', 'integer'),
>     Field('clinical_dx', 'reference d_dx', 'string', label='Clinical 
> diagnosis', default='Unknown'),
>     Field('clinical_subdx', 'string', label='Clinical subdiagnosis', 
> default='Unknown'),
>     Field('atb_dx', 'string', label='Antibody', default='Unknown'))
>
> #Enforce rules
> db.general.mrn.requires = [IS_NOT_EMPTY(error_message='The medical record 
> field cannot be empty'),
>                            IS_MATCH('^BV\d{8}$', error_message='Medical 
> record number is in the wrong format'),
>                            IS_NOT_IN_DB(db, db.general.mrn, 
> error_message='The medical record is already in the database')]
> db.general.clinical_dx.requires = IS_IN_DB(db, db.d_dx.dx_code, 
> '%(dx_descr)s', zero=None)
> db.general.clinical_subdx.requires = IS_IN_DB(db, db.d_subdx.subdx_code, 
> '%(subdx_descr)s', zero=None)
> db.general.atb_dx.requires = IS_IN_DB(db, db.d_atb.atb_code, 
> '%(atb_descr)s',zero=None)
>
> auth = Auth(db)
> auth.define_tables()
> auth.settings.registration_requires_verification = False
> auth.settings.registration_requires_approval = True
> auth.settings.reset_password_requires_verification = False
>
> *#CONTROLLER*
> @auth.requires_login()
> def patients_list():
>
>     fields=[db.general.general_id,
>             db.general.mrn,
>             db.general.first_name,
>             db.general.last_name,
>             db.general.serum_number,
>             db.d_dx.dx_descr,
>             db.d_subdx.subdx_descr,
>             db.d_atb.atb_descr]
>
>     links=[dict(header='Edit', body=lambda row: 
> A(T('Edit'),_href=URL('default', 'test',args=[row.get('general', 
> row).general_id])))]
>
>     left = [db.d_dx.on(db.general.clinical_dx==db.d_dx.dx_code), 
> db.d_subdx.on(db.general.clinical_subdx==db.d_subdx.subdx_code), 
> db.d_atb.on(db.general.clinical_dx==db.d_atb.atb_code)]
>
>     grid = SQLFORM.grid(db.general.id>0,
>                         fields=fields,
>                         left=left,
>                         links=links,
>                         orderby=[db.general.id],
>                         exportclasses=dict(csv_with_hidden_cols=False, 
> xml=False, tsv_with_hidden_cols=False, tsv=False, json=False, html=False),
>                         deletable=True,
>                         editable=True,
>                         details=True,
>                         paginate=50)
>
>     return locals()
>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to