PostgreSQL查询不返回数据

时间:2015-10-21 22:45:45

标签: sql database postgresql

我有2个表(tabl1tbl2),我想要一个通过匹配tbl2和{{1}来加入tbl1col1id的查询因此,结果集包含col2idtbl1 name列的tbl2数据。

以下查询不返回任何数据:

SELECT Date
   ,cast(tbl1.col1_id as varchar) AS "col1name"
   ,tbl2.name::varchar AS "tabl2name"
   ,tbl1.currency::money as "Avg currency"
   ,CASE WHEN rich IS NULL then 'Unknown'
         ELSE 'True' END AS "bank"
   ,CAST(Ranking AS FLOAT) / 18 + 1 AS "Rich Ranking"
   ,tbl1.Reviews as "Reviews"
 FROM tbl1 
  JOIN tbl2
    ON tbl1.col1id = tbl2.col2id

tbl1.col1id包含3,999,999

等数字

当我进行完全正确的加入时,我能够从2个单独的表中获取所有数据

我创建了一个新表,其中包含我想要的某些名称。

我创建了一个新表,其中的值与3,999,999的完全匹配,我最终没有得到匹配,所以我认为类型有问题而且我一直在弄乱数据a我和卡住了。

我猜这些值不是同一类型,所以我做了一些额外的工作,输入它作为整数或varchar在其他地方和同一个查询。 但结果只返回,但没有产生错误,所以我认为这是我的类型错误。

1 个答案:

答案 0 :(得分:0)

如果你只想做你在帖子中描述的内容,最好避免不必要的复杂性。以下是否会返回任何内容?

# include <stdio.h>

int main()
{
    int i, j, k, t, m, x[100][100], s, c, n;
    long ans, mul;

    scanf ("%d", &t);

    while (t--) {
            scanf ("%d%d", &s, &c);

            n = s;

            for (i = 0; i < n; i++)
                    scanf ("%d", &x[i][0]);

            for (j = 1; j < n; j++)
                    for (i = 0; i < n; i++) {
                            x[i][j] = x[i+1][j-1] - x[i][j-1];
                    }

            k = n;

            printf("\n");

            for (i = 0; i < n; i++) {
                    for(j = 0; j < k; j++)
                            printf ("%d ", x[i][j]);
                    printf ("\n");
                    k--;
            }

            printf ("\n\n");

            for (m = 1; m <= c; m++) {
                    ans = x[0][0];

                    for ( i = 1; i < n - 1; i++) {
                            mul = x[0][i];
                           for (j = 1; j <= i; j++)
                                    mul = mul * (s + m - j);

                            ans = ans + mul;
                    }

                    printf ("%ld ", ans);
            }
            printf ("\n");
    }

    return 0;

}

如果什么都没有回来我会首先建议检查是否有任何tbl2.col2id匹配tbl1.col1id。 你可以通过使用LEFT JOIN(atm使用JOIN,你真的使用INNER JOIN)轻松完成。然后,您的行集将包含来自tbl1的所有行,如果不能进行连接,则在tbl2.name中具有空值。

除此之外,我将确保tbl1.col1id和tbl2.col2id的数据类型相同。