У меня есть 3 таблицы в базе данных sql
- Статус животного
- Животные
- Корзина
Что яхочу сделать, это иметь возможность удалить несколько элементов из животных и таблиц статуса животных на основе корзины.
То же самое между всеми таблицами является AnimalID, который является первичным ключом во всех таблицах иисходя из этого я должен удалить их.Но в то же время мне нужно удалить его для кого-то с определенным адресом электронной почты.
Например, если у меня есть кто-то с электронным адресом 123@gmail.com, и у этого человека в корзине 2 животных: 1 с идентификатором123, а другой с идентификатором 456. Мне нужно удалить этих 2 конкретных животных из двух других таблиц.
Я знаю, как это сделать для 1 таблицы, но не в тех случаях, когда у меня есть несколько таблиц, которые зависят друг от друга, а такжес ними в зависимости от конкретной электронной почты, когда есть также другие электронные письма и животные в корзине.Спасибо заранее за помощников.
Вот как это работает снаружи
x= AnimalStatus.Delete(AdoptCart.GetAnimalId(Session["email"].ToString()).ToString());
if (x > 0)
{
x = Animal.Delete(AdoptCart.GetAnimalId(Session["email"].ToString()).ToString());
if (x > 0)
{
AdoptCart.RemoveAllbyEmail(Session["email"].ToString());
Вот все коды удаления в порядке их работы:
Удаляет AnimalStatus на основе идентификатора животных
static public int Delete(string id)
{
int rowsAffected;
string strSql = string.Format("delete from AnimalStatus where AnimalID='" + id + "'");
rowsAffected = (int)dataservice.ExecuteNonQuery(strSql);
return rowsAffected;
}
Удаляет животное из таблицы животных на основе идентификатора животного
static public int Delete(string id)
{
int rowsAffected;
string strSql = string.Format("delete from Animal where AnimalID='" + id + "'");
rowsAffected = (int)dataservice.ExecuteNonQuery(strSql);
return rowsAffected;
}
Удаляет всех животных из таблицы корзины
static public int Remove(string AnimalID)
{
int rowsAffected;
string strSql = string.Format("delete from Cart where AnimalID='" + AnimalID + "'");
rowsAffected = (int)dataservice.ExecuteNonQuery(strSql);
return rowsAffected;
}
Проблема сэти коды состоят в том, что все это удаляет только 1 животное, и мне нужно несколько удаленных объявлений, поэтому все это неправильно
Я попытался создать утверждение типа одного предложения из другого вопроса stackoverflow, который был решен, однако ямне не удалось настроить мои вещи, чтобы заставить его работать.То, что я пробовал:
Delete Animal.*, AnimalStatus.*
FROM Animal INNER JOIN
AnimalStatus ON Animal.AnimalID = AnimalStatus.AnimalID INNER JOIN
Cart ON Animal.AnimalID = Cart.AnimalID
WHERE (Cart.UserEmail = N'Email')
Исходя из приведенного мною примера, следующие слова, которые должны быть удалены, помечены как // удалено
Cart Table
| AnimalID | Email_Addr |
--------------------------------------
| 123 | 123@gmail.com | //removed
| 456 | 123@gmail.com | //removed
| 765 | jj@gmail.com |
| 343 | bb@gmail.com |
| 256 | cc@gmail.com |
Animal Status Table
| AnimalID | Vaccinated |
--------------------------------------
| 123 | Yes | //removed
| 456 | Yes | //removed
| 765 | No |
| 343 | No |
| 256 | No |
Animals Tables
| AnimalID | Age |
--------------------------------------
| 123 | 3 | //removed
| 456 | 4 | //removed
| 765 | 3 |
| 343 | 7 |
| 256 | 10|
Хотелось бы простоотметьте, что я работаю с очень небольшими знаниями, когда дело доходит до удаления нескольких предметов из нескольких таблиц одновременно, поскольку это не то, чему мы учились в школе, однако требуется, чтобы мы изучали это.
Также хотел бы указатьНа основании предложений, которые мне дали, мы не изучили внешние ключи, поэтому я не уверен, как с ними работать.