SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.02.2013 16:35:40

shitbox2
Участник
Зарегистрирован: 17.02.2013
Сообщений: 2

Помогите составить запрос с джойном

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

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)

Неактивен

 

#2 19.02.2013 13:46:54

keysi_
Участник
Зарегистрирован: 18.05.2010
Сообщений: 16

Re: Помогите составить запрос с джойном

Мне кажется в вашей ситуации стоит сделать два запроса вместо join. А еще мне кажется что проверять наличие articles.text_id не имеет смысла, так как у вас translates.text_id такой же, значит проверки translates.text_id будет достаточно.
Если, конечно вы не забыли нам сказать что из таблицы articles мы тоже что то будем брать или записывать.

Отредактированно keysi_ (19.02.2013 13:47:43)

Неактивен

 

#3 21.02.2013 17:07:01

shitbox2
Участник
Зарегистрирован: 17.02.2013
Сообщений: 2

Re: Помогите составить запрос с джойном

С чем-то разобрался, но с чем-то полный затык, помогайте!

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

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson