[odb-users] How to change the join type of relations in a view
علی دانش
adanesh at noornet.net
Wed Jun 29 08:50:56 EDT 2016
Hi Boris!
How to change the join type of relations in a view. I want to use 'inner' instead of 'left'.
e.g.:
#pragma db object pointer(std::shared_ptr) session
class SubjectIndex
{
public:
#pragma db id auto
int m_id;
QString m_subject;
#pragma db unordered
QList<odb::lazy_shared_ptr<TagIndex>> m_tags;
};
#pragma db object pointer(std::shared_ptr) session
class TagIndex
{
public:
#pragma db id auto
int m_id;
QString m_tag;
};
#pragma db view object(TagIndex) object(SubjectIndex inner)
struct TagSubjectIndex
{
QString m_subject;
};
The generated query in '*-odb.cxx' file is like this:
query_base_type r (
"SELECT "
"\"SubjectIndex\".\"subject\", "
"\"SubjectIndex\".\"bookID\" ");
r += "FROM \"TagIndex\"";
r += " INNER JOIN \"SubjectIndex_tags\" ON";
r += "\"SubjectIndex_tags\".\"value\"=\"TagIndex\".\"id\"";
r += " LEFT JOIN \"SubjectIndex\" ON";
r += "\"SubjectIndex_tags\".\"object_id\"=\"SubjectIndex\".\"id\"";
As you see there is a 'LEFT JOIN' that I want to change it to "INNER JOIN". How can I do that?
Thanks,
Ali
More information about the odb-users
mailing list