tina_overgaard Ответов: 3

Как сделать внутреннее соединение внутри оператора INSERT INTO?


Привет
Мне нужно сделать внутреннее соединение внутри этого утверждения, как я это делаю??

Это то, что я пробовал до сих пор?

Когда я отправляю электронное письмо пользователю, я хочу отобразить понедельник вместо 1, поэтому мне нужно внутренне присоединиться к таблице dage.


CREATE TABLE [dbo].[ordre_linie] (
    [ordre_linie_id] INT          IDENTITY (1, 1) NOT NULL,
    [antal]          VARCHAR (50) NOT NULL,
    [navn]           VARCHAR (50) NOT NULL,
    [fk_ordre_id]    INT          NOT NULL,
    [fk_kurve_id]    INT          NOT NULL,
    [total_pris]     VARCHAR (50) NOT NULL,
    [fk_dag_id]      INT          NOT NULL,
    PRIMARY KEY CLUSTERED ([ordre_linie_id] ASC)
);

CREATE TABLE [dbo].[dage] (
    [dag_id]   INT          IDENTITY (1, 1) NOT NULL,
    [dag_navn] VARCHAR (50) NOT NULL,
    PRIMARY KEY CLUSTERED ([dag_id] ASC)
);



cmd.CommandText = @"INSERT INTO ordre_linie (SELECT * FROM ordre_linie INNER JOIN dage ON ordre_linie.fk_dag_id = dage.dag_id) 
                                (fk_ordre_id, navn, fk_kurve_id, antal, total_pris, fk_dag_id, dag_navn) 
                               VALUES (@fk_ordre, @navn, @kurv, @antal, @pris, @dag, @dag_navn)";


Надеюсь, кто-нибудь сможет мне помочь

/Тина

IpsitaMishra

Если вы просите форамт вот он

Вставить в таблицу 3(Col1,col2....)
Значения(выберите Col1,Col2 ...
Из табл. 1
Внутреннее соединение tabl2
условие WHERE)

если вы хотите получить точное решение, пожалуйста, предоставьте всю структуру таблицы.

tina_overgaard

Я обновил свой вопрос

tina_overgaard

Создайте таблицу [dbo].[ordre_linie] (
[ordre_linie_id] INT IDENTITY (1, 1) NOT NULL,
[antal] VARCHAR (50) NOT NULL,
[navn] VARCHAR (50) NOT NULL,
[fk_ordre_id] INT NOT NULL,
[fk_kurve_id] INT NOT NULL,
[total_pris] VARCHAR (50) NOT NULL,
[fk_dag_id] INT NOT NULL,
Кластеризованный первичный ключ ([ordre_linie_id] ASC)
);

Создайте таблицу [dbo].[Даге] (
[dag_id] INT IDENTITY (1, 1) NOT NULL,
[dag_navn] VARCHAR (50) NOT NULL,
Кластеризованный первичный ключ ([dag_id] ASC)
);

thatraja

с какой целью? дайте нам более подробную информацию, пожалуйста

tina_overgaard

Когда я отправляю электронную почту я просто отправляю значение 1 вместо понедельника

thatraja

Поделитесь данными примерной таблицы, обновите свой вопрос.

thatraja

Является ли dage основной таблицей, подобной предопределенным значениям, которые будут использоваться для ordre_linie?
И вы вставляете значения только в таблицу ordre_linie, верно?

[no name]

Всегда используйте хранимую процедуру вместо таких параметризованных запросов..

tina_overgaard

Я еще не научился использовать хранимые процедуры

IpsitaMishra

пожалуйста, взгляните на это http://www.c-sharpcorner.com/UploadFile/gtomar/storedprocedure12052007003126AM/storedprocedure.aspx

Member 14600877

я хочу создать таблицу с идентификатором и датой , если мы введем сегодняшнюю дату в столбце дата, то поле столбца дата автоматически заполнится именем дня после ввода даты , как это сделать ? плз дайте мне решение

3 Ответов

Рейтинг:
7

coded007

CREATE Table #Temp(SON nvarchar(50),ProNo nvarchar(50))

INSERT INTO #TEMP
SELECT SOH.SalesOrderNumber,PP.ProductNumber FROM Sales.SalesOrderDetail SOD (NOLOCK)
INNER JOIN Sales.SalesOrderHeader SOH (NOLOCK) ON SOH.SalesOrderID = SOD.SalesOrderID
INNER JOIN Production.Product PP (NOLOCK) ON PP.ProductID = SOD.ProductID

SELECT * from #Temp

Drop TABLE #Temp


Рейтинг:
21

ZurdoDev

IpsitaMishra дал один пример, но лично мне не нравится использовать значения, когда вы должны использовать соединения в своем операторе insert. Я бы рекомендовал

INSERT INTO Table1 (Field1, Field2)
SELECT a.Field1, b.Field2
FROM TableA a 
INNER JOIN TableB b ON a.ID = b.ID


tina_overgaard

Но я нисхожу значения так что он вставляет значения в базу данных

ZurdoDev

Я перечитал ваш вопрос и ничего не понял. Объясните по-английски, что вам нужно.

tina_overgaard

Я вставляю значения в свою таблицу ordre_linie и отправляю информацию на свою электронную почту.

Но в моем письме есть стенд 1 на fk_dag_id, и я хочу показать, что означает 1 в таблице dage.
таблица ordre_linie
fk_dag_id = 1

Даге стол
dag_id = 1
dag_navn = понедельник

dag_id = 2
dag_navn = четверг

ZurdoDev

Это не совсем понятно. Где ты застрял?

tina_overgaard

Вот как выглядит моя электронная почта, когда она отправляется мне:

Порядка НР Антал Navn
609 14 Бломмер
609 7 Блумколь
Всего pris på ordre 149 kr.
Leveringsdag 1 ????????????????????????? Этот я хочу показать в понедельник из таблицы dag_navn

TinaOvergaard
Damgårdsvej 4
2100Kbh
2568965

ZurdoDev

ОК. Так что используйте то, что я опубликовал, и просто модифицируйте.

Вставить в таблицу 1 (Field1, Field2)
Выберите б.Поле2, параметр@, @некоторое_значение, @whateveryouneed.
Из таблицы tablea в
Внутреннее соединение таблицы tableb B на.Идентификатор = б.Идентификатор

tina_overgaard

Могу я это сделать??

Вставить в таблицу 1 (Field1, Field2)
Выберите TableA.Поле2, параметр@, @некоторое_значение, @whateveryouneed.
Из Табл.
Внутреннее соединение таблицы tablea на table1.ИД = таблицы tablea.Идентификатор

ZurdoDev

Вам понадобится таблица 1 в вашей инструкции Select.

Вставить в таблицу 1(Field1, Field2)
Выберите TableA.Field2, @parameter, ...
Из Табл. 1
Внутреннее соединение таблицы tablea на table1.ИД = таблицы tablea.Идентификатор

ZurdoDev

В принципе, просто напишите оператор SELECT, который дает вам нужные данные, а затем вы можете поместить INSERT поверх него после того, как ваш оператор select заработает.

tina_overgaard

Вставить в ordre_linie
(Выберите * из dage, fk_ordre_id, navn, fk_kurve_id, antal, total_pris, fk_dag_id, dag_navn)
Внутреннее соединение dage на ordre_linie.fk_dag_id = dage.dag_id
Значения (@fk_ordre, @navn, @kurv, @antal, @pris, @dag, @dag_navn)

Он приходит и говорит:
Неправильный синтаксис около ключевого слова "выбрать".
Неверный синтаксис рядом с ')'.

ZurdoDev

Правильно. Следуйте синтаксису, который я вам дал.

Вставить в order_linie (поля, которые вы вставляете в)
ВЫБИРАТЬ...

tina_overgaard

Теперь это ценности

Неправильный синтаксис около ключевого слова 'значение'.

ZurdoDev

ПОСМОТРИ НА МОЙ SQL. НЕТ НИКАКИХ ЦЕННОСТЕЙ. Извините, что кричу, но вы, кажется, плохо слушаете. :)

tina_overgaard

Я сделал это по-твоему, но мне нужны ценности

tina_overgaard

Это твой путь.:
Вставить в ordre_linie (fk_ordre_id, navn, fk_kurve_id, antal, total_pris, fk_dag_id)
Выберите * от Даге, dag_navn, @fk_ordre, @navn, @kurv, @Антал @Прис @Даг, @dag_navn
Внутреннее соединение dage на ordre_linie.fk_dag_id = dage.dag_id
"

И я получаю эту ошибку:
Необходимо объявить табличную переменную "@fk_ordre".
Необходимо объявить табличную переменную "@navn".
Необходимо объявить табличную переменную "@kurv".
Необходимо объявить табличную переменную "@Antal".
Необходимо объявить табличную переменную "@pris".
Необходимо объявить табличную переменную "@dag".
Необходимо объявить табличную переменную "@dag_navn".

ZurdoDev

Итак, объявите свои переменные. Вам нужно будет их передать.

thatraja

Вот почему я попросил у вас образцы данных

tina_overgaard

Я вставляю значения в свою таблицу ordre_linie и отправляю информацию на свою электронную почту.

Но в моем письме есть стенд 1 на fk_dag_id, и я хочу показать, что означает 1 в таблице dage.
таблица ordre_linie
fk_dag_id = 1

Даге стол
dag_id = 1
dag_navn = понедельник

dag_id = 2
dag_navn = четверг

Рейтинг:
20

Vishnu Prajapati

Этот нам очень полезен....

http://stackoverflow.com/questions/7040390/sql-insert-into-with-select-and-inner-join[^]


Надежда :
---------------------
Вишну Праджапати