SQL Server 2005 синтаксис для вставки - PullRequest
0 голосов
/ 03 марта 2011

Мой запрос такой, и я хочу вставить его, но с помощью SQL Server 2005

insert into postad(cityid,category_id,ad_id,title,ad_description,subcategory_id) 
values((select city_id from city where city_name='mumbai'),
(select cat_id from category where cat_name='automobiles & vehicles'),
(select adid from adType where adtype like'wanted'),'myad','itys grwweefa',
(select subcat_id from  subcategory where category_id =
    (select cat_id from category where cat_name like'automobiles & vehicles')))

Может ли кто-нибудь помочь мне, как мне этого добиться

    string city = ddcity.SelectedItem.ToString();
    string cat = ddcat.SelectedItem.ToString();
    string subcat = ddsubcat.SelectedIndex.ToString();
    string adtype = ddadtype.SelectedItem.ToString();
    string title = txttitle.Text.Trim();
    string description = txtdescription.Text.Trim();
    string video = txtvideo.Text.Trim();
    DateTime date = DateTime.Now;
    SqlConnection myConnection = new SqlConnection("Data Source=DELL-PC\\SQLEXPRESS;Initial Catalog=eclass;Persist Security Info=True;integrated security = true");
    string cityq = "select city_id from city where city_name=" + city;
    string catq = "select cat_id from category where cat_name=" + cat;
    string subq = "select subcat_id from city where subcat_name=" + subcat+"and category_id="+catq;

    SqlCommand storead = new SqlCommand("INSERT INTO postad " + "(cityid,category_id,ad_id,title,ad_description,subcategory_id,video,date_creation) " + " values (@city,@cat,@adtype,@title,@description,@subcat,@video,@date)", myConnection);

storead.Parameters.AddWithValue("@title",title);
storead.Parameters.AddWithValue("@city",city);
storead.Parameters.AddWithValue("@cat",cat);
storead.Parameters.AddWithValue("@subcat",subcat);
storead.Parameters.AddWithValue("@adtype",adtype);
storead.Parameters.AddWithValue("@description",description);
storead.Parameters.AddWithValue("@video",video);
storead.Parameters.AddWithValue("@date",date)

Вот как этодолжен работать n идентификаторов являются первичными ключами

Ответы [ 2 ]

1 голос
/ 03 марта 2011
INSERT INTO postad(
  cityid, category_id, 
  ad_id, title, ad_description, 
  subcategory_id)
VALUES 
  SELECT TOP(1) city_id, cat_id, ad_id, 'myad', 'itys grwweefa', subcat_id
  FROM city, category, adType, subcategory
  WHERE city.city_name='mumbai'
    AND category.cat_name='automobiles & vehicles'
    AND adType.adtype like 'wanted'
    AND subcategory.category_id = category.cat_id

Это непроверенный код


Редактировать: Переместить ваш оператор INSERT в хранимую процедуру и заменить все строковые значения в моем запросе параметрами

INSERT INTO postad(
  cityid, category_id, 
  ad_id, title, ad_description, 
  subcategory_id)
VALUES 
  SELECT TOP(1) city_id, cat_id, ad_id, @title, @description, subcat_id
  FROM city, category, adType, subcategory
  WHERE city.city_name=@city
    AND category.cat_name=@subcat
    AND adType.adtype like @adtype
    AND subcategory.category_id = category.cat_id
0 голосов
/ 03 марта 2011

Я сомневаюсь, что это сработает, поскольку в подзапросе может быть возвращено несколько строк - все подзапросы должны возвращать одинаковое количество строк для вставки в таблицу.

Вопрос не совсем ясен о том, что должно быть достигнуто, пожалуйста, исправьте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...