Проблема GROUP BY, когда SELECT для dataGridView из 2 таблиц
С небольшой помощью я сделал это два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);
Вот что делает второй: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) и проверенные?
Как я вижу, никто не отвечает так хорошо, позвольте мне привести один простой пример: когда я создаю клиента, я проверяю, например, 3 из 10 флажков. Таким образом, он выбирает 3 строки (и те, которые он добавляет в таблицу klisluz). И у меня есть эти два,queries
First query
показывает установленный флажок от других клиентов, но также и не отмеченные для этого клиента. Он просто показывает все, что находится в базе данных, поэтому он показывает строки с проверенными вещами других клиентов (но только те, которые одинаковы для этого и некоторых других клиентов, он НЕ СОЗДАЕТ дубликатов). Второй показывает только проверено для этого клиента, но без тех, которые он не выбрал. Поэтому, когда я редактирую этого клиента, я хотел бы показать, что он проверял, а остальные 7 (7 возможностей, которые у него есть)проверил, чтобы я мог их проверить). Теперь я могу отображать только то, что я проверял (без проверки) или все, включая проверки других клиентов (которые одинаковы для этого клиента). Я надеюсь, что это понятно, извините за мой слабый английский.
Постскриптум С проверкой я имею в виду проверкуcheckbox
(выбирая строку) В основном это программа, которая добавляет обслуживание клиентам.
Большое спасибо за ваш интерес, а также за чтение, если вы прочитаете все это. Я застрял с этим вопросом на 2 дня: /
Изображение для 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» отображается потому что его нет в таблице клислиз.