Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Select сразу из нескольких полей и строк
 
 автор: technic611   (22.11.2013 в 13:48)   письмо автору
 
 

Есть такой запрос

INSERT INTO necessary_details (name,model) VALUES ('2','1'), ('2','2')

так вот появилась необходимость проверки этих данных прежде чем добавить если уже такие в таблице или нет, чтобы не было дубляжа.

  Ответить  
 
 автор: Valick   (22.11.2013 в 15:07)   письмо автору
 
   для: technic611   (22.11.2013 в 13:48)
 

для исключения дубляжей можно использовать уникальный индекс на поле (либо несколько полей)
если этого мало, то
http://softtime.ru/forum/read.php?id_forum=3&id_theme=57631

  Ответить  
 
 автор: technic611   (23.11.2013 в 01:17)   письмо автору
 
   для: Valick   (22.11.2013 в 15:07)
 

Вы предлагаете использовать INSERT IGNORE IN ????

  Ответить  
 
 автор: Valick   (23.11.2013 в 20:00)   письмо автору
 
   для: technic611   (23.11.2013 в 01:17)
 

ну для чего то его придумали разработчики MySQL
да и этот вариант гораздо проще

  Ответить  
 
 автор: technic611   (23.11.2013 в 23:05)   письмо автору
 
   для: Valick   (23.11.2013 в 20:00)
 

не работает у меня такая конструкция. Люди, помогите убрать дубляжи

  Ответить  
 
 автор: Sfinks   (25.11.2013 в 09:35)   письмо автору
 
   для: technic611   (23.11.2013 в 23:05)
 

Вы, вероятно, не поняли смысл ключевого слова IGNORE.
Оно не предотвращает вставку строк. Оно предотвращает вывод ошибок.
А какие могут быть ошибки при вставке? Например - дублирование уникального ключа.
Т.е. если у вас существует уникальный ключ по какому-то полю или нескольким полям, при попытке вставить дубль возникнет ошибка и строка не будет вставлена.
А чтобы подавить вывод ошибки и применяется ключевое слово IGNORE.
Т.е. для решения вашей задачи нужно 2 условия: уникальный ключ по двум полям и IGNORE в запросе.

Для добавления уникального ключа, выполните такой запрос:
ALTER TABLE  `necessary_details` ADD UNIQUE (`name`, `model`);

И запрос на вставку должен выглядеть таким образом:
INSERT IGNORE INTO necessary_details (name,model) VALUES ('2','1'), ('2','2');

  Ответить  
 
 автор: technic611   (12.12.2013 в 15:38)   письмо автору
 
   для: Sfinks   (25.11.2013 в 09:35)
 

да работает все отлично,только это не совсем то. нужно чтобы записи не добавлялись по двум совпадением и из поля name и model, а так получается что одно совпадение и в базу не добавляется запрос, а мне нужно чтоб по двум

  Ответить  
 
 автор: Sfinks   (13.12.2013 в 08:12)   письмо автору
 
   для: technic611   (12.12.2013 в 15:38)
 

Значит вы что-то сделали не так.
Придется читать предыдущий пост снова и снова до полного просветления.
Там все написано. И все правильно. Т.е. из последнего кода добавлены будут обе строки.

  Ответить  
 
 автор: technic611   (13.12.2013 в 12:38)   письмо автору
 
   для: Sfinks   (13.12.2013 в 08:12)
 

да, строки добавились, если я хочу например поменять просто name, то строка не добавляется уже, т.к. есть уникальное значение. а мне нужно чтобы добавлялась. Т.е. нужно как-то игнорировать наличие одного уникального поля и добавлять запись, А если есть два совпадения то не добавлять

  Ответить  
 
 автор: Sfinks   (13.12.2013 в 23:00)   письмо автору
 
   для: technic611   (13.12.2013 в 12:38)
 

Во первых, покажите вывод запроса:
SHOW CREATE TABLE necessary_details

Во вторых, "поменять" - это UPDATE, а добавить - это INSERT. Поэтому....
> если я хочу например поменять просто name, то строка не добавляется уже
а) покажите пример как вы что добавляете.
б) покажите состояние тавлицы в районе совпадающих строк перед запросом.

P.S. Это все не прихоть. Все пункты обязательны к выполнению.

  Ответить  
 
 автор: technic611   (15.12.2013 в 00:01)   письмо автору
85.2 Кб
 
   для: Sfinks   (13.12.2013 в 23:00)
 

мне нужно чтобы не добавлялись уже существующие name и model для каждого id. а как вы подсказали не хочет вообще добавляться даже одно из значений name или model

  Ответить  
 
 автор: technic611   (16.12.2013 в 22:32)   письмо автору
 
   для: technic611   (15.12.2013 в 00:01)
 

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

  Ответить  
 
 автор: Sfinks   (19.12.2013 в 08:23)   письмо автору
 
   для: technic611   (16.12.2013 в 22:32)
 

Я вам написал что от вас требуется, чтобы получить помощь.
Вы проигнорировали.
Мне гадать надоело.
Остальным, похоже, и начинать не охото.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования