2015-09-24 5 views
-1

То, что я пытаюсь сделать, это обновить несколько строк таблицы mysql с одинаковым идентификатором. Я искал множество решений, но не нашел подходящего. У меня есть таблица, которые выглядят подобными ниже:Обновление базы данных sql с помощью php

+----+--------+--------+--------------+----------+ 
| id | emp_id | job_id | basic_salary | stat | 
+----+--------+--------+--------------+----------+ 
| 62 | 186 |  30 |   8400 | Active | 
| 64 | 110 |  8 |  12542 | Inactive | 
| 65 | 110 |  5 |  12542 | Active | 
+----+--------+--------+--------------+----------+ 

Так что я хочу, чтобы обновить эту таблицу, содержащую id = 64 и emp_id = 110 как Active, которые должны также обновить другие строки с emp_id 110 в Inactive если они Active так, что только одна запись с emp id 110 остается active и отдых inactive.

Прошу прощения за помощь.

+2

Любая попытка пытались? – jitendrapurohit

+0

Одна вещь, которую вы могли бы попробовать - сохранить активный идентификатор в логическом значении (если вы изменяете схему таблицы). Затем вы можете проверить активность, выполнив поиск идентификатора сотрудника и логического значения true. –

+0

спасибо Brandon White Попробую ваше предложение –

ответ

1

Вы можете сделать как этот

// first find all the records for the employee with status as Active and make them Inactive. 
    $query1 = mysql_query("select * from table_employee where emp_id = 110 and status = 'Active' "); 
    if($query1 && mysql_num_rows($query1) > 0) 
    { 
     while(mysql_fetch_array($query1)) 
     { 
       mysql_query("update table_employee set status = 'Inactive' where emp_id = 110"); 
     } 
    } 

// then make the record Active that you you want to 
$query2 = mysql_query("update table_employee set status = 'Active' where emp_id = 110 and id = 64"); 
+0

Большое спасибо @Suyog. Ваше решение действительно помогло. –

+0

приветствуются – Suyog

1

Можно попробовать с помощью этих простых запросов: -

UPDATE <table_name> SET `stat` = "Active" WHERE id = 64 AND emp_id = 110 

, а затем:

UPDATE <table_name> SET `stat` = "Inactive" WHERE id <> 64 AND emp_id = 110 
+0

Я думаю, что цель заключалась в том, чтобы конкретные идентификаторы сотрудников действовали как отдельные лица, но я мог ошибаться. –

+0

Я думаю, что OP действительно означал это по-другому: он хочет установить определенные emps как активные, а затем AUTOMATICALLY, чтобы другие настроили на неактивное. Но можно было ошибиться там (поставить вопрос о разъяснении там в разделе комментариев самого вопроса). – Thomas

+0

Согласен, если OP отвечает за то, что необходимо, я хотел бы обновить ответ. Но если это не так, и это может быть сделано с увольнением столько запросов, которые он хочет, это может быть полезно для Р.Карки - возможно, ОП, как он работал для него – jitendrapurohit

0

Одна вещь, которую вы могли бы попробовать это, чтобы сохранить активный идентификатор в логическое значение (если вы изменения схема таблицы). Затем вы можете проверить активность, выполнив поиск идентификатора сотрудника и логического значения true.

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