Я программирую приложение С# Windows Forms в Visual Studio и пытаюсь получить данные о ценах на продукты и о сумме, которую пользователь добавил в свой список покупок, из моей локальной базы данных MySQL в список (int).
Я делаю следующее:
Если пользователь добавил продукт 4 раза в свой список покупок, я добавляю штрих-код продукта 4 раза в свой список (int).
Это работает, но когда я считываю все элементы списка с помощью метода String.Join() в предложение IN моего запроса и выполняю его, он возвращает строку только один раз, хотя оператор IN имеет один и тот же штрих-код несколько раз.
Ниже показано, как я добавляю штрих-коды в свой список (int).
int count = 0;
List<int> barcodes = new List<int>();
MySqlCommand cmd = new MySqlCommand("SELECT product_barcode, amount FROM shopping_list_items WHERE shopping_list_id = " + current_shoppingListID + ";", db.connection);
cmd.ExecuteNonQuery();
var reader = cmd.ExecuteReader();
while (reader.Read())
{
do
{
barcodes.Add(Int32.Parse(reader["product_barcode"].ToString()));
count++;
} while (count < Int32.Parse(reader["amount"].ToString()));
}
reader.Close();
Вот как я выполняю свой запрос и присваиваю значения переменным:
MySqlCommand cmdSum = new MySqlCommand("SELECT sum(price) AS 'total', supermarket_id FROM prices WHERE barcode IN (" + String.Join(", ", barcodes) + ") GROUP BY supermarket_id;", db.connection);
cmdSum.ExecuteNonQuery();
var readerSum = cmdSum.ExecuteReader();
while (readerSum.Read())
{
switch (double.Parse(readerSum["supermarket_id"].ToString()))
{
case 1:
sumSupermarket1 = double.Parse(readerSum["total"].ToString());
break;
case 2:
sumSupermarket2 = double.Parse(readerSum["total"].ToString());
break;
case 3:
sumSupermarket3 = double.Parse(readerSum["total"].ToString());
break;
}
}
Упрощенный запрос просто для простоты может выглядеть так:
SELECT name FROM products WHERE barcode IN (13495, 13495, 13495);
Если приведенный выше - мой запрос, я хочу, чтобы он возвращал 3 одинаковых строки.
Итак, теперь мой вопрос: как я могу получить несколько строк, хотя я использую одно и то же значение несколько раз в предложении IN MySQL-запроса?