LINUX.ORG.RU

mysql запрос


0

1

стоит задача волонтёрами набивать базу, они заполняют 2 поля, номер и заголовок, OPIS заполняется автоматом

| KOD | int(7) |

| UID | int(4) |

| NAME | varchar(50) |

| L1 | bigint(21) |

| L4 | text |

| OPIS | int(7) |

но для проверки ввода я использую более 2 волонтёров на одну запись

когда выводится список того что ввел конкретный волонтёр, запрос проверяет есть ли ещё такие записи с этим номером и одинаковым заголовком но другим UID, если есть то запись считается подтверждённой

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

★★

Последнее исправление: fMad (всего исправлений: 3)

 select count(*) occurences, kod, name from table having occurences < 2 group by kod,name 

Выведет записи у которых комбинация kod,name встречается только 1 раз.

hidden_4003
()

когда выводится список того что ввел конкретный волонтёр, запрос проверяет есть ли ещё такие записи с этим номером и одинаковым заголовком но другим UID, если есть то запись считается подтверждённой

ага. Записывается в другую таблицу, и удаляется из первой.

emulek
()
Ответ на: комментарий от emulek

нет, записывается в одну таблицу, но там есть индекс UNIQUE (OPIS,L1,uid)

когда всё выверят, будет импорт в основную таблицу

fMad ★★
() автор топика
Ответ на: комментарий от hidden_4003

select count(*) occurences, L1, L4 from delo_volontirs having occurences < 2 group BY L1;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group BY L1' at line 1

и дело не совсем подойдёт, так как должен быть where по OPIS

fMad ★★
() автор топика
Ответ на: комментарий от emulek

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

но но у меня уже вводят, не когда останавливать

fMad ★★
() автор топика
Ответ на: комментарий от fMad

но у меня уже вводят, не когда останавливать

дык искать дубли всё равно надо. Вот и удаляйте их. ИМХО KISS, бритва Оккама и прочее такое.

emulek
()
Ответ на: комментарий от fMad

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

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

emulek
()
Ответ на: комментарий от emulek

да нормальная идея, только идея с триггером не прокатит в случае неопределённого числа волонтёров

заранее не известно сколько их будет, потому и не понятно сколько записей считать за подтверждение

я сделал вьюху, которая подсчитывает подтверждения и позволяет добавлять where по другим параметрам, затем когда опись подтвердят у начальства будет повод нажать кнопку и ощутить могучую силу автоматизации

fMad ★★
() автор топика
Последнее исправление: fMad (всего исправлений: 1)
Ответ на: комментарий от fMad

заранее не известно сколько их будет, потому и не понятно сколько записей считать за подтверждение

1. а это разве не логика, и разве её обязательно делать триггерами?

2. можно например хранить время. Если запись старая и проверенная, то она годная. Если запись новая(подтверждённая) — может это просто спам. Если старая и не подтверждённая — мусор скорее всего. Но это конечно эмпирика, причём самая простая.

у начальства будет повод нажать кнопку

а это уже психология.Это не ко мне.

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.