Я пытаюсь получить информацию об элементах для отображения на странице.По какой-то причине главная категория (masCat.cat_name) не возвращает данные.Вот код для моего оператора SQL:
strSQL.CommandText = "Select Top 25 tblItem.item_id, tblItem.item_title
, masCat.cat_name, regCat.cat_name, tblItem.item_lot, tblCosigner.cs_txt_id
, tblItem.item_status, tblItem.item_photo_status, tblItem.item_pr
, tblItem.item_premium
From tblItem
Left Join tblCosigner On (tblItem.item_cs_txt_id = tblCosigner.cs_txt_id)
Left Join tblCDR On (tblItem.item_cdr_txt_id = tblCDR.cs_id)
Left Join tblCat As masCat On (tblItem.item_mcat_id = masCat.cat_id)
Left Join tblCat As regCat On (tblItem.item_cat_id = regCat.cat_id)
Where " + sqlQuery + "
Order By tblItem.item_id;";
try
{
conn.Open();
using (SqlDataReader itemReader = strSQL.ExecuteReader())
{
while (itemReader.Read())
{
resultText += "<tr>\n<td>" + itemReader.GetValue(0).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(1).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(2).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(3).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(4).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(5).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(6).ToString() + "</td>\n";
resultText += "<td>" + itemReader.GetValue(7).ToString() + "</td>\n";
if (itemReader.GetValue(8).ToString().Length > 0)
{
price = double.Parse(itemReader.GetValue(8).ToString());
}
if (itemReader.GetValue(9).ToString().Length > 0)
{
premium = double.Parse(itemReader.GetValue(9).ToString());
}
total = price + premium;
resultText += "<td>" + total.ToString("0.00") + "</td>\n</tr>\n";
}
itemReader.Close();
}
}
Я думал, что мой оператор соединения был неправильным для соединения masCat, но если я просто изменил tblItem.item_mcat_id на просто tblItem.item_cat_id (который является вторичнымкатегория, также выбранная в этом же запросе), работает просто отлично.Оба извлекаются из одной и той же таблицы, но из разных связанных полей в реляционной таблице.Я уверен, что tblItem.item_mcat_id - это правильное имя поля для идентификатора главной категории.
Теперь я привык использовать MySQL, и я знаю, что с SQL вы должны выполнять Group By, а также,Но я не знаю, что я бы сгруппировал, кроме tblItem.item_id, чтобы он не объединял строки данных.Поэтому я не понимаю, как это решило бы мою проблему.Может кто-нибудь увидеть что-то не так с этим оператором SQL?Все возвращается нормально, за исключением главной категории.
Во время написания этой статьи меня несколько раз прерывали, так что я немного потерял рассудок, поэтому надеюсь, что дал достаточно информации.Если нет, просто спросите, и я отвечу или обновлю свой вопрос.Заранее спасибо ...
РЕДАКТИРОВАТЬ
Это в комментариях, но переменная sqlQuery имеет значение по умолчанию «tblItem.item_id> 0».Это работает, если я добавляю к нему другие критерии динамически (не включая основную категорию).
Кроме того, я, должно быть, не указал что-то правильно, но я получаю результаты от этого.Я пропускаю только поле основной категории (для этого возвращается пустое поле).Сам запрос не вызывает сбоев.
ИСПРАВЛЕНО
Кто бы ни создавал таблицы, изначально создавал нулевую панель tblItem.item_mcat_id ... -.-