0

这是我的查询:

string x1 = "SELECT unos_golub.drzava, unos_golub.spol, unos_golub.broj_goluba as broj, parovi.par_m, parovi.par_z,parovi.broj_para FROM parovi JOIN unos_golub ON (parovi.par_m=unos_golub.ID) WHERE parovi.uzgojni_par=1";
string x2 = "SELECT unos_golub.drzava, unos_golub.spol, unos_golub.broj_goluba as broj2, parovi.par_m, parovi.par_z,parovi.broj_para FROM parovi JOIN unos_golub ON (parovi.par_z=unos_golub.ID) WHERE parovi.uzgojni_par=1 ORDER BY broj_para ASC";
cmd.CommandText = x1+" UNION ALL "+x2;

在我的表“parovi”中有 2 列“par_m”和“par_z”。在第二个表“unos_golub”中有“ID”和其他一些。现在我需要从“par_m”和“par_z”中获取值,在“unos_golub”中匹配并获取一些数据。

例如,如果我得到 par_m=91 和 par_z=92,我需要在“unos_golub”的 ID 中找到这些数字,并获取 91 和 92 的不同数据并显示它。我想也许 UNION ALL 可以提供帮助,但它不起作用。

这是我的桌子

  1. 表:parovi
  2. 表:unos_golub

表:parovi

表:unos_golub

4

1 回答 1

2

这种方法将把所有的“M”和“Z”值放在一个单独的行上。请注意,我将 TWICE 加入“unos_golub”表,但别名不同。所以,现在我有一个 parovi 记录同时指向各自的“M”和“Z”版本。并且可以从每个列中提取列,从而为它们提供别名结果列名称,后缀为“M”和“Z”,表示它们各自的来源。

SELECT 
      parovi.par_m, 
      parovi.par_z,
      parovi.broj_para,
      unos_M.drzava as drzava_M, 
      unos_M.spol as spol_M, 
      unos_M.broj_goluba as broj_M, 
      unos_Z.drzava as drzava_Z, 
      unos_Z.spol as spol_Z, 
      unos_Z.broj_goluba as broj_Z
   FROM 
      parovi 
         JOIN unos_golub as unos_M
            ON parovi.par_m = unos_M.ID
         JOIN unos_golub as unos_Z
            ON parovi.par_m = unos_Z.ID
   WHERE 
      parovi.uzgojni_par=1";

根据您想要显示所有行的评论,您的查询应该只需要一个小的更改。执行 UNION 时,查询必须具有相同的列名。您通过以下方式更改了其中一个

unos_golub.broj_goluba as broj
vs
unos_golub.broj_goluba as broj2

这会使查询失败。列名不同,因此失败。

于 2013-02-08T18:01:58.120 回答