Правильно построить запрос к БД. SQL

216
22 ноября 2017, 00:36

Исходные данные:

CREATE TABLE ed_words (
    id int NOT NULL AUTO_INCREMENT,
    eng varchar(20),
    rus varchar(20),
    owner int,
    PRIMARY KEY (id),
    FOREIGN KEY (owner) REFERENCES ed_users(id)
);

Таблица содержит колонку со словом на английском и колонку со словом на русском. Например у нас есть такие данные:

INSERT INTO `ed_words` (eng,rus,owner) VALUES ('word1','перевод1',1),('word2','перевод2',1),('word3','перевод3',1);

Например я хочу добавить слово word1 но с другим переводом как-то так:

INSERT INTO `ed_words` (eng,rus,owner) VALUES ('word1','перевод4',1);

Вставлять нужно сразу по нескольку слов в запросе, от одного до inf, некоторые слова могут уже быть в БД, некоторых может не быть. Мне нужно, чтобы если слово уже существует перезаписался только перевод, т.е. чтобы не было дубликатов английских слов. Возможно ли это сделать как-то с помощью триггеров, либо как можно решить этот вопрос. Работаю на PHP, субд MySQL.

Answer 1

Вам нужна функция INSERT ... ON DUPLICATE KEY UPDATE

INSERT INTO ed_words (eng,rus,owner) VALUES ('word1','перевод1',1) ON DUPLICATE KEY UPDATE rus='перевод1';

MULIPLES

INSERT INTO ed_words (eng,rus,owner) VALUES ('word1','перевод1',1), ('word2','перевод2',1), ('word3','перевод3',1), ('word4','перевод4',1), ('word5','перевод5',1) ON DUPLICATE KEY UPDATE rus=VALUES(rus), owner=VALUES(owner)

READ ALSO
Warning: unpack(): Type f: not enough input, need 4, have 2

Warning: unpack(): Type f: not enough input, need 4, have 2

Задача заключается в том, чтобы создать веб-приложение, которое считает объём 3D модели

243
Как создать модель в Laravel 4.2 из консоли?

Как создать модель в Laravel 4.2 из консоли?

Доброго времениКаким образом можно создать модель в Laravel 4

207
Empty test suite. No tests executed

Empty test suite. No tests executed

У меня проект на Laravel 55 Я хочу запустить тесты, но о какой-то причине даже ExampleTest не запускается, пишет Empty test suite

163
Не вызывается метод

Не вызывается метод

При пустых полях выводится "Empty query!", а то что должна вывести функция admin_login() отсутствует, почему так?

147