2014-10-09 3 views
0

Привет ребят я получил 3 таблицы:Php подсчитывая +1, вставленное значение в таблице

Propossals: 
id_propossal, date 

Articles: 
id_article, description 

Data: 
id, id_propossal, id_artigo, position 

Таким образом, проблема здесь есть, я хотел бы создать что-то, что рассчитывает автоматически положение статьи по данным таблицы.

Пример:

Propossals 
------------- 
1 04/06/2014 
2 05/06/2014 

Articles 
------------- 
1 article01 
2 article02 

Data 
------------- 
1(id) 1(id_propossal) 1(id_article) 1(position defined by user using INSERT) 
2(id) 1(id_propossal) 2(id_article) 2(position|this number calculates automatically +1) 
3(id) 1(id_propossal) 1(id_article) 3(position|this number calculates automatically +1) 

и если я сделать для другого propossal,

4(id) 2(id_propossal) 1(id_article) 1(position|goes back to 1 because is a new propossal) 

Что-то вроде этого, оценить всю помощь.

+0

Вы можете сделать это в процедуре в базе данных MySQL, но, вероятно, лучше всего это сделать на PHP с выбором перед вставкой или подзапросом select. Вероятно, вы должны включить свой PHP-код, так как вы отметили PHP. – Devon

+0

Не могли бы вы научить, как это сделать, пожалуйста. – luckr

+0

Ну, я не собираюсь писать для вас свой код. Покажите нам, что у вас есть, и, возможно, я или кто-то еще может вам помочь. Что касается вашего вопроса, введите свой PHP-код и заберите все лишнее. Этот вопрос требует только макета таблицы данных, другие таблицы не имеют значения. – Devon

ответ

0

Сделайте запрос в таблице данных и найдите позицию max + 1 любой строки с id_propossal равным той, которую вы хотите вставить.

Например, если вы хотите вставить 123 id_propossal

SELECT (COALESCE(MAX(number),0)+1) AS nextPosition FROM Data WHERE id_propossal=123 

Это вернет 1.

(COALESCE используется в случае, если не более возвращает нуль)

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

Но, если вы хотите удалить строки из таблицы данных? У вас будут неиспользованные позиции.

0

Ok ребята, уже установил его:

используется функция MAX(), выбирается наибольшее значение из propossal и добавить +1 на него, и это решило мою проблему.

Благодарим за помощь.

Смежные вопросы