Как задать имя колонки таблицы как значение колонки другой таблицы?
Помогите, пожалуйста, найти решение такой ситуации:
Вот есть таблица A (id, one, two) и таблица B (id, name).
Как можно изменить значение колонки в таблице A (one или two), если имя одной из этих колонок задано в таблице B в колонке name?
UPDATE A, B SET A.( ? B.name ?) = 1 WHERE A.id = B.id
Дякую Вам!
А якщо зв'язок один до багатьох?
Тобто в таблиці B є декілька полів, які належать одному id в таблиці А?
(Тут треба додавати число, то я спростив, щоб легше було зрозуміти)
UPDATE A JOIN B ON A.id=B.id SET A.one = IF(B.name = 'one', A.one+1,A.one+0), A.two= IF(B.name = 'two',A.one+1,A.one+0)
То я замiтив уже, та все одно до таблиці А додається один, а записів з таким же id в таблиці В 3.
а зв'язок у таблицi mysql повинен бути один-до-багатьох?
чи тут це не має значення?
Геннадий Акулов: А, ви про це, я вас невірно зрозумів. Там тоді проблема получиться. Вам тоді подрібно робити це не одним запросом а декількома. Для прикладу так.
UPDATE A JOIN (select B.id COUNT(*) as allcount FROM B WHERE B.name = 'one') as C ON C.id=A.id set A.one= A.one + C.allcount
А потім такий же запит для іншого поля з таблиці А
UPDATE A JOIN (select B.id COUNT(*) as allcount FROM B WHERE B.name = 'two') as C ON C.id=A.id set A.two= A.two+ C.allcount
MrTimon: так я спочатку і думав, що треба десь підрахувати, але не був певен, бо не дуже розумію як SQL-запити працюють, треба мені ще вчитись и вчитись