Запросить соответствие первичного ключа из таблицы Customer и CustomerCard на основе CustomerEmail и CustomerCardNumber? - PullRequest
0 голосов
/ 20 сентября 2019

Вот изображение, которое показывает эти таблицы в Paint

Я пытаюсь выполнить запрос, который обновляет информацию о Карте Клиента на основе электронной почты Клиента и номера Карты Клиента.«Клиенты» - это таблица, а «Клиенты» - это еще одна таблица, и обе эти таблицы связаны между собой.Оба имеют CustomerID в качестве первичного ключа.Таким образом, данные, вводимые для запроса от веб-службы, представляют собой адрес электронной почты клиента и номер карты клиента.Предположим, что адрес электронной почты «test123@gmail.com», а номер карты - «1234567».Имея только эту информацию, мне нужно выполнить запрос на обновление карты CustomerCards, но таблица CustomerCards не имеет атрибута электронной почты.Я предполагаю, что требуется внутреннее объединение, но я понятия не имею, как я могу это сделать.

Вот пример запроса на обновление, который работает, если я вставляю customerid, но теперь мне нужно сделать это с электронной почтой клиентаэто не атрибут из таблицы CustomerCards.

query = "update customercards set expirationmonth='" + expirationmonth + "', expirationyear='" + expirationyear + "' where cardnumber='"+ cardNumber + "' and customerid='" + emailPersonal + "'";

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

К сожалению, Oracle не поддерживает синтаксис UPDATE ... JOIN ... SET.Вместо этого вы можете использовать подзапрос для восстановления идентификатора клиента из электронного письма:

UPDATE CustomerCards
SET 
    expirationMonth = :expirationMonth
    expirationyear  = :expirationYear
WHERE
    CardNumber = :cardNumber
    AND cc.CustomerId = (SELECT CustomerId FROM Customers c WHERE email = :email)

. Предполагается, что в этом письме однозначно идентифицируется клиент.

В запросе ожидаются 4 параметра:

  • :cardNumber и :email используются для идентификации записи для обновления
  • :expirationMonth и :expirationYear - это правила для назначения
0 голосов
/ 20 сентября 2019

Будет что-то вроде:

UPDATE CustomerCards
SET CardNumber = '1234567'
WHERE CustomerID = (SELECT TOP 1 CustomerID FROM Customers WHERE Email = 'test123@gmail.com')

Отрегулируйте при необходимости.Выше будет обновлен номер карты до 1234567 для клиента, связанного с адресом электронной почты test123@gmail.com

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