def test_join_multiple2bis(self):
        fLOG(__file__,
             self._testMethodName,
             OutputPrint=__name__ == "__main__")
        filename = os.path.join(
            os.path.split(__file__)[0], "data", "database_linked.zip")
        temp = get_temp_folder(__file__, "temp_join_multiple2bis")
        filename = unzip(filename, temp)
        assert os.path.exists(filename)

        db = Database(filename, LOG=fLOG)
        db.connect()

        where = {("profile_QSSH", "bucket"): ("==", "bu###1")}
        n1 = db.JoinTreeNode("profile_QSSH",
                             where=where,
                             parent_key="query",
                             key="query")
        n2 = db.JoinTreeNode("url_QSSH",
                             where=where,
                             parent_key=('url', 'pos'),
                             key=('url', 'pos'))
        n1.append(n2)

        sql, fields = db.inner_joins(n1, execute=False, create_index=False)

        view = db.execute_view(sql)
        assert "WHERE" in sql
        assert view == [
            ('facebbooklogin', 1, 0, 'bu###1', 86, 0,
             'digg.com/security/Hackers_Put_Social_Networks_In_Crosshairs',
             'digg.com/security/Hackers_Put_Social_Networks_In_Crosshairs', 1,
             0, 1, 1, 0, 0, 0, 0)
        ]

        where = {("profile_QSSH.bucket"): ("==", "bu###1")}
        n1 = db.JoinTreeNode("profile_QSSH",
                             where=where,
                             parent_key="query",
                             key="query")
        n2 = db.JoinTreeNode("url_QSSH",
                             where=where,
                             parent_key=('url', 'pos'),
                             key=('url', 'pos'))
        n1.append(n2)

        sql, fields = db.inner_joins(n1, execute=False, create_index=False)

        view = db.execute_view(sql)
        assert "WHERE" in sql
        assert view == [
            ('facebbooklogin', 1, 0, 'bu###1', 86, 0,
             'digg.com/security/Hackers_Put_Social_Networks_In_Crosshairs',
             'digg.com/security/Hackers_Put_Social_Networks_In_Crosshairs', 1,
             0, 1, 1, 0, 0, 0, 0)
        ]

        db.close()
    def test_join_multiple3(self):
        fLOG(__file__,
             self._testMethodName,
             OutputPrint=__name__ == "__main__")
        filename = os.path.join(
            os.path.split(__file__)[0], "data", "database_linked.zip")
        temp = get_temp_folder(__file__, "temp_join_multiple3")
        filename = unzip(filename, temp)
        assert os.path.exists(filename)

        db = Database(filename, LOG=fLOG)
        db.connect()

        where = {"bucket": ("==", "bu###1")}
        root = db.JoinTreeNode("query_QSSH", where=where)
        n1 = db.JoinTreeNode("profile_QSSH",
                             where=where,
                             parent_key="query",
                             key="query")
        n2 = db.JoinTreeNode("url_QSSH",
                             where=where,
                             parent_key=('url', 'pos'),
                             key=('url', 'pos'))
        root.append(n1)
        n1.append(n2)

        sql, fields = db.inner_joins(root, execute=False, create_index=False)

        view = db.execute_view(sql)
        assert view == [
            ('facebbooklogin', 'bu###1', 86, 157, 520, 0, 63, 0, 503, 0, 619,
             1, 3906365, 'facebbooklogin', 1, 0, 'bu###1', 86, 0,
             'digg.com/security/Hackers_Put_Social_Networks_In_Crosshairs',
             'digg.com/security/Hackers_Put_Social_Networks_In_Crosshairs', 1,
             0, 1, 1, 0, 0, 0, 0)
        ]
        assert fields == [
            ('query', 'query_QSSH', 'query'),
            ('bucket', 'query_QSSH', 'bucket'), ('nbq', 'query_QSSH', 'nbq'),
            ('sum_num', 'query_QSSH', 'sum_num'),
            ('sum_view_url', 'query_QSSH', 'sum_view_url'),
            ('sum_click_url', 'query_QSSH', 'sum_click_url'),
            ('sum_rewrite', 'query_QSSH', 'sum_rewrite'),
            ('sum_click_ads', 'query_QSSH', 'sum_click_ads'),
            ('sum_max_pos_view', 'query_QSSH', 'sum_max_pos_view'),
            ('sum_max_pos_click', 'query_QSSH', 'sum_max_pos_click'),
            ('sum_duration', 'query_QSSH', 'sum_duration'),
            ('sum_unknown', 'query_QSSH', 'sum_unknown'),
            ('sum_daysec', 'query_QSSH', 'sum_daysec'),
            ('aquery', 'profile_QSSH', 'query'),
            ('apos', 'profile_QSSH', 'pos'), ('atype', 'profile_QSSH', 'type'),
            ('abucket', 'profile_QSSH', 'bucket'),
            ('amax_nb', 'profile_QSSH', 'max_nb'),
            ('asum_difftime', 'profile_QSSH', 'sum_difftime'),
            ('aurl', 'profile_QSSH', 'url'), ('aaurl', 'url_QSSH', 'url'),
            ('aapos', 'url_QSSH', 'pos'), ('aaco', 'url_QSSH', 'co'),
            ('aanb_view', 'url_QSSH', 'nb_view'),
            ('aasum_nb_view', 'url_QSSH', 'sum_nb_view'),
            ('aasum_difftime_view', 'url_QSSH', 'sum_difftime_view'),
            ('aanb_click', 'url_QSSH', 'nb_click'),
            ('aasum_nb_click', 'url_QSSH', 'sum_nb_click'),
            ('aasum_difftime_click', 'url_QSSH', 'sum_difftime_click')
        ]
        assert "WHERE" in sql
        db.close()