在你的帮助下我做了这两个QUERY
。我发布了图片,以便您可以在green squares
是我想看到的空值red squares
是我不想显示的值。多变的vyberradek
插入“子项”的值INT
在数据库中,但我通过了它string
.
所以我会简化:现在我可以显示全部或部分,你能帮我如何显示正确的记录吗?
这第一query
做这个:
string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);
Here is what does the second query
:
string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and klisluz.subkey ='" + vyberradek + "' GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);
正如你所看到的,我也想显示空的。我想您可能还需要检查复选框的代码:
for (int i = 0; i < dtg_ksluzby.Rows.Count; i++)
{
var row = dtg_ksluzby.Rows[i];
int id = (int)row.Cells["ID"].Value;
using (var novyprikaz3 = new SqlCommand("SELECT * from klisluz WHERE subkey='" + vyberradek + "'AND IDzajsluz=" + id, spojeni))
{
spojeni.Open();
SqlDataReader precti3 = novyprikaz3.ExecuteReader();
if (precti3.HasRows)
{
row.Cells[5].Value = true;
}
spojeni.Close();
}
}
请你们建议我应该如何query
看起来甚至要选择非检查值(不在表 klisluz 中)和检查值?
我发现没有人回复得这么好,让我举一个简单的例子:当我创建客户端时,我会检查 10 个复选框中的 3 个。因此它选择 3 行(以及添加到表 klisluz 中的行)。我有这两个queries
, First query
显示其他客户端选中的复选框,以及该客户端未选中的复选框。它只是显示数据库中的所有内容,因此它显示包含其他客户端的已检查内容的行(但仅显示与此客户端和其他一些客户端相同的行,它不会创建重复项)。第二个显示仅检查该客户,但不检查他未选择的客户。因此,当我编辑这个客户时,我想显示他检查了什么以及其余 7 个(他没有检查的 7 个可能性,以便我可以检查它们)。现在,我只能显示我检查的内容(没有未检查的内容)或包括其他客户端检查在内的所有内容(对于该客户端来说是相同的)。我希望这是可以理解的,抱歉我的英语不好。
附:检查我的意思是检查checkbox
(选择行)
基本上它是一个为客户增加服务的程序。
非常感谢您的兴趣,如果您阅读了全部内容,也非常感谢您的阅读。我被这个问题困扰了两天:/
kwwallpe 的图片:
您可以在这里看到“Nic”从未被任何客户选择过,因此它被显示。
为了让我的问题更清楚 - 我从另一个表中获取其中一些列(正如您在 sql 查询中看到的那样)。
kwwallpe 的代码是这样的:
string sQuery = string.Format("SELECT zajsluz.akce,zajsluz.text,klisluz.pocet,klisluz.subkey,zajsluz.ID FROM zajsluz LEFT JOIN klisluz ON zajsluz.ID=klisluz.IDzajsluz WHERE zajsluz.akce= '{0}' and ISNULL(klisluz.subkey, '" + vyberradek + "') = '" + vyberradek + "' GROUP BY klisluz.subkey,zajsluz.akce,zajsluz.text,klisluz.pocet,zajsluz.ID", sZakce);
我认为这段代码非常接近 2。因为它选择从未被任何客户选择过的值 b4。您可以看到帽子“Nic”被显示,因为它不在表 klisluz 中。