powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
9 сообщений из 9, страница 1 из 1
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39490876
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите решить задачу

Есть таблица oc_product_attribute

product_idattribute_idlanguage_idtext 68 22 1 Натуральная кожа 68 22 2 Натуральная кожа 168 23 1 Искусственная кожа 168 23 2 168 32 1 Картон 168 32 2 681 12 1 Бумага 681 12 2

Таблица содержит множество product_id.
Каждый product_id содержит множество attribute_id.
Каждый attribute_id представлен в двух языках language_id и имеет text

Для некоторых строк для language_id = 2 нет значения text и мне нужно его заполнить.

Насколько я понимаю, нужно JOIN-ить две виртуальные, одна с language_id =1, например, l_one, вторая - language_id =2, например, l_two, а потом что-то типа UPDATE l_two SET l_two.text =l_one.test

Но как правильно JOIN-ить я не могу понять... По чем объединять, если нет уникального поля для обоих таблиц. Уникальным есть только пара product_id-attribute_id

Или может есть другой способ решить задачу?
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39490907
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rezhisser,

Тебе, видимо, надо пройти курс обучения языку SQL...
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39491201
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,
да, твой совет мне очень помог)
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39491228
MikkiMouse
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rezhisser,

Уважаемый MasterZiv прав. Вперед учить SQL!
Уж как правильно джойнить понимать надо!
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39491357
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось так

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE oc_product_attribute AS T1
JOIN oc_product_attribute AS T2 ON ( T2.PRODUCT_ID = T1.PRODUCT_ID
AND T2.ATTRIBUTE_ID = T1.ATTRIBUTE_ID )
SET T2.text = T1.text
WHERE T1.language_id = 1
AND T2.text = ""
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39491430
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rezhisser,

вместо ON можно использовать более короткую инструкцию USING (PRODUCT_ID, ATTRIBUTE_ID)
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39491449
rezhisser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
paver, ага, спасибо)
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39491754
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rezhisserПолучилось так

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE oc_product_attribute AS T1
JOIN oc_product_attribute AS T2 ON ( T2.PRODUCT_ID = T1.PRODUCT_ID
AND T2.ATTRIBUTE_ID = T1.ATTRIBUTE_ID )
SET T2.text = T1.text
WHERE T1.language_id = 1
AND T2.text = ""



Фиг с ним с ON, а вот условие JOIN-а, наверное, надо исправить.
И решить вообще, какую таблицу ты UPDATE-ишь, а какую JOIN-ишь.

Код: sql
1.
2.
3.
4.
...
JOIN oc_product_attribute AS T2 ON T2.PRODUCT_ID = T1.PRODUCT_ID AND T2.ATTRIBUTE_ID = T1.ATTRIBUTE_ID and T1.language_id = 1
SET T2.text = T1.text
WHERE T2.text = ""



Наверное, ты UPDATE-ишь таблицу T2, так её и указывай в UPDATE. А JOIN-ишь ты T1, её в JOIN.

Ну и наверное ты ставишь в соответствие одним записям таблицы, которые надо изменить, другие подобные записи этой же таблицы,
откуда надо будет брать данные. А вот условия несовпадения записей у тебя нет. Также нет и условия совпадения или несовпадения языков,
хотя может быт тебе оно и не нужно.
...
Рейтинг: 0 / 0
Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
    #39492007
paver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivА вот условия несовпадения записей у тебя нет. Также нет и условия совпадения или несовпадения языков,
хотя может быт тебе оно и не нужно.
Я так понимаю, что условие T2.text = "" неявно подразумевает AND T2.language_id = 2
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обновить данные в таблице по данным из этой же таблице (виртуальные таблицы)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]