Добавление записей в таблицу и одновременное добавление записей в таблицу, использующую ее как ссылку. Sql добавить запись в таблицу


php - Мой запрос Sql - добавьте новую запись в таблицу в определенных условиях из других двух таблиц и избегайте дублирования записей

Я схожу с ума, пытаясь понять это весь день, но безуспешно.

У меня есть 3 таблицы: выборы, аукционы, игра

То, что мне нужно, - вставить 3 новые записи в таблицу "Выбор" для каждой игры, которая написана в таблице "аукционы" (они отмечены в обеих таблицах с идентификационным номером), но некоторые необходимые данные также находятся в таблице "игр", которая связанных с таблицей "аукционов" (с BetfairMark). И чтобы избежать дублирования записи, если таковые имеются.

В таблице " Аукционы " есть следующие столбцы: id (записывается в таблице от ранее и это соединение с таблицей "выбор") BetfairMark (должен быть таким же, как "BetfairMarketID" из "игры", чтобы правильно соединить таблицу аукционов с таблицей "игра"), заголовок (написанный в таблице от ранее)

Таблица " Выбор " имеет столбцы: идентификатор (который является автоматическим увеличением числа для каждой новой записи генерируется в этой таблице), auctionid (это число, которое должно быть создано здесь с этим запросом, чтобы быть таким же, как "идентификатор" из таблицы аукционов) порядок (каждый из 3 -х записей должны быть получено с порядковыми номерами запроса 1, 2, 3) коэффициенты (необходимо получить номер надлежащих шансов для каждой записи из таблицы игры)

В таблице " Игра " есть следующие столбцы: BetfairMarketID (который должен быть того же числа, что и "BetfairMark" из таблицы аукционов, чтобы определить правую строку для получения данных из этой таблицы) ABack (количество шансов, которое нужно выбрать в новой записи в разделе " order '1) BBack (количество шансов, которое нужно выбрать в новой записи под "order" 2) DrawBack (количество шансов, которое нужно выбрать в новой записи в "order" 3)

Подводя итог необходимости достижения этого: - вставьте 3 новые записи в таблицу "выборы", где каждая запись должна быть отмечена с порядком 1, 2 и 3. Должен показать правильный номер аукциона в соответствии с отношением к таблице аукционов. - если будет повторяющаяся запись записи (в этом случае у какой-либо записи будет такой же номер аукциона, что и номер записи "тот же номер", который не будет вставлен. - В этих трех новых записях должны вводиться номера "шансы" из "ABack", "BBack", "DrawBack" в таблице "игра" (что соответствует таблице "аукционов" в соответствии с тем же номером BetfairMarketID/BetfairMark).

Я пробовал это, надеясь, что на правильном пути, но нужно много изменений:

INSERT INTO selections (selections.auctionid, selections.order, selections.odds) VALUES ((SELECT id FROM auctions), '1', (select ABack FROM game, auctions WHERE game.BetfairMarketID = auctions.BetfairMark)), ((SELECT id FROM auctions), '2', (select BBack FROM game, auctions WHERE game.BetfairMarketID = BetfairMark)), ((SELECT id FROM auctions), '3', (select DrawBack FROM game, auctions WHERE game.BetfairMarketID = BetfairMark))

Но получение этой ошибки: [Err] 1242 - Subquery возвращает более 1 строки

qaru.site

sql - Добавление записей в таблицу и одновременное добавление записей в таблицу, использующую ее как ссылку

Скажем, у меня есть таблица событий: tblEvents и таблица, содержащая людей: tblParticipants. Многие люди могут участвовать в событии, поэтому у нас есть отношения "один ко многим", которые хранятся в таблице: tblEvents_Participants, которая имеет такие записи: Event_ID,Participant_ID.

Я хотел бы создать форму ввода данных, в которой в первом разделе есть поля для ввода информации о событии, а во втором разделе - непрерывная подформация с использованием tblParticipants в качестве источника, к которой я могу добавить людей. Наконец, мне бы хотелось, чтобы при нажатии кнопки cmdAddRecord произойдет следующее:

  1. Добавьте запись события в tblEvents, скажем: Event_ID = X, на основе входов из раздела 1.
  2. В таблице соединений, tblEvents_Participants, добавьте записи: "X, participant1_ID", "X,participant2_ID"..., tblEvents_Participants "X, participant1_ID", "X,participant2_ID"... на основе записей, выбранных в подформе.

Проблема, с которой я сталкиваюсь, заключается в том, что для такой вещи требуется 2 запроса, выполняемых один за другим: один для добавления записи о событиях, а другой - для добавления записей в таблицу соединений, поскольку идентификатор события не существует для использования в таблицу соединения до того, как она будет добавлена в tblEvents, и я не нашел способа сделать это, по крайней мере, без использования кода VB для выполнения запросов один за другим, что довольно неуклюже и сложно использовать.

EDIT: по запросу я отправлю данные. Я использовал псевдонимы в сообщении, чтобы сделать его максимально кратким, поэтому я постараюсь сохранить данные одинаково:

Источник строки Comboxbox:

SELECT tblParticipants.ID, tblParticipants.[FirstName], tblParticipants[LastName] FROM tblParticipants

Bound Column: 1 Column Count: 3 Column Width: 0,3,3

Как выглядит таблица внутри формы (Как я уже сказал, я использовал псевдонимы в своем сообщении, так что имена полей немного разные: (У каждого сотрудника много заданий, поэтому сотрудники == события, задания == участники, идентификатор относятся к соединению ID таблицы, это не имеет значения).

Когда я открываю субформ на другой вкладке, отображается вся таблица.

PS: Добавлена ли запись книги (ID = 1, title= Help) в другой записи, прежде чем добавлять авторов?

qaru.site

syntax - SQL: вставить все записи из одной таблицы в другую таблицу без конкретных столбцов

Как вы, вероятно, поняли из предыдущих ответов, вы не можете делать то, что вам нужно. Я думаю, вы можете понять проблему, с которой сталкивается SQL Server, не зная, как сопоставить дополнительные/отсутствующие столбцы.

Тем не менее, поскольку вы упоминаете, что цель того, что вы пытаетесь сделать здесь, - это резервное копирование, возможно, мы можем работать с SQL Server и обходить проблему. Не зная вашего точного сценария, невозможно получить правильный ответ здесь, но я предполагаю следующее:

  • Вы хотите управлять процессом резервного копирования/аудита для таблицы.
  • Вероятно, у вас есть несколько из них и вы хотите избежать изменения зависимых объектов при каждом добавлении/удалении столбцов.
  • Таблица резервирования может содержать дополнительные столбцы для целей аудита.

Я хочу предложить вам два варианта:

Эффективная практика (IMO) для этого может заключаться в обнаружении изменений схемы с использованием триггеров DDL и их использовании для изменения таблицы резервного копирования. Это позволит вам использовать подход "select * from...", потому что список столбцов будет согласован между двумя таблицами.

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

Другим вариантом, который может быть полезен для вашего конкретного сценария, является создание поддерживающего представления для таблиц, выравнивающих список столбцов. Вот краткий пример:

create table foo (id int, name varchar(50)) create table foo_bk (id int, name varchar(50), tagid int) go create view vw_foo as select id,name from foo go create view vw_foo_bk as select id,name from foo_bk go insert into vw_foo select * from vw_foo_bk go drop view vw_foo drop view vw_foo_bk drop table foo drop table foo_bk go

Надеюсь, это поможет:)

qaru.site