Mysql Могу ли я сделать обновление с помощью join - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть база данных с несколькими таблицами, и все мои запросы работают, но я хотел бы иметь новую и не могу заставить ее работать.Две таблицы 'vins' и 'producteurs' с внешним ключом IDproducteur в моей таблице 'vins'.Мне нужно обновить таблицу 'vins' из источника Excel, где данные не всегда записываются по-своему, и мне нужно изменить значение запаса для некоторых записей таблицы 'vins'. P.nomproducteur, V.annee и v.nomпараметры, но для теста я поставил жесткие значения.Мой запрос следующий:

UPDATE vins AS v 
JOIN producteurs p  
ON ( p.IDproducteur = v.IDproducteur AND p.nomproducteur LIKE "Charles" )
SET stock = 10
WHERE v.nom LIKE "Symphonie" AND v.annee = 2013 

У меня есть две записи, где продюсер - "Чарльз", а V.nom - Symphonie, одна с Анне = 2010 и одна с 2013. У меня нет ошибок в phpMyadmin, но естьнет результатов для моего запроса даже при изменении порядка команд.Разве то, что я хочу, невозможно сделать?

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Поместите условие p.nomproducteur LIKE "Charles" в предложение WHERE:

UPDATE vins v 
JOIN producteurs p ON p.IDproducteur = v.IDproducteur 
SET stock = 10
WHERE 
  v.nom = "Symphonie" AND v.annee = 2013 AND p.nomproducteur = "Charles"

Также нет необходимости в LIKE, в этом случае подойдет простой =.

0 голосов
/ 28 апреля 2019

Обновление, основанное на JOIN, обычно используется в mysql, поэтому убедитесь, что ваше соединение и условия действительно соответствуют значениям в ваших таблицах

UPDATE vins AS v 
INNER JOIN producteurs p ON  p.IDproducteur = v.IDproducteur 
SET v.stock = 10
WHERE v.nom =  "Symphonie" 
AND v.annee = 2013 
AND p.nomproducteur = "Charles"

и убедитесь, что вы не фильтруете частичное использование строки = вместо

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