Задавайте вопросы, мы ответим
Вы не зашли.
Есть табличка со статьями и с переводами. В статьях вместо текста указаны ссылки на строки в таблице переводов
translates
id, ru, en, ... (поля с текстами переводов)
articles
id, user_id, title_id, description_id
Как написать запросы
1. выборки записей из articles для user_id = 1 и lang = 'ru'
2. вставки/обновления записи в articles для user_id = 1 и lang = 'ru'
3. удаления записи из articles для user_id = 1
По первому случаю придумал такой запрос
SELECT articles.id, translates.text_ru
FROM articles, translates
WHERE translates.id=articles.text_id
AND articles.user_id=1
Потом что-то завис
UPDATE articles, translates
SET articles.text_id=?, translates.text_ru = 'текст'
WHERE articles.id = 123);
Как сделать, чтобы, если существует articles.text_id, то обновлялся бы перевод в соответствующей строке translates.text_ru
А если не существует, то в translates создавалась бы новая строка и ее id присваивался бы в articles.text_id?
Отредактированно shitbox2 (17.02.2013 16:36:45)
Неактивен
Мне кажется в вашей ситуации стоит сделать два запроса вместо join. А еще мне кажется что проверять наличие articles.text_id не имеет смысла, так как у вас translates.text_id такой же, значит проверки translates.text_id будет достаточно.
Если, конечно вы не забыли нам сказать что из таблицы articles мы тоже что то будем брать или записывать.
Отредактированно keysi_ (19.02.2013 13:47:43)
Неактивен
С чем-то разобрался, но с чем-то полный затык, помогайте!
1. В запрос delete для таблицы articles PHP динамически подставляет список полей (и условий с ними) text1_id, text2_id, text3_id, ... с ссылками на строки таблицы translates. При удалении поля из articles должны удалиться все поля из translates на которые есть ссылки
Так же удаляемая строка из articles может быть чьим-то родителем и нужно рекурсивно удалить всех потомков у которых она в parent_id по тому же алгоритму с удалением всех переводов из translates для каждого
2. При выборке строк из таблицы articles, значения полей text1_id, text2_id, text3_id, ... должны заменяться группировкой соответствующих значений из translates. Как это сделать?
articles
id
parent_id
text1_id
...
textNid
translates
id
ru
en
de
Неактивен