Подскажите, пожалуйста, какой должен быть код, если:
В БД(mysql) есть 2 таблицы.
В одной указаны имена работников, а в другой собирается статистика по их работе.
Нужно взять список имён из первой таблицы и сравнить со списком имён во второй.
Если имя совпало - делать UPDATE на эту строку во второй таблице.
Если имени нет, делаем туда INSERT
Надеюсь понятно описал...
Спустя 2 минуты, 23 секунды (16.08.2011 - 22:33) inpost написал(а):
А твои попытки есть? Покажи, как ты думаешь сделать выборку из первой таблицы, и сравниваешь наличие из второй?
Спустя 1 минута, 22 секунды (16.08.2011 - 22:34) rooor написал(а):
inpost
Пока у меня только
Warning: array_diff() [function.array-diff]: Argument #2 is not an array
Пока у меня только
Warning: array_diff() [function.array-diff]: Argument #2 is not an array
Спустя 3 минуты, 20 секунд (16.08.2011 - 22:38) inpost написал(а):
Можно попробовать так:
А теперь у тебя выберутся все записи, далее проверяй, является ли запись из таблицы b NULL, или нет, и если действительно является - значит там чувака нет, если есть - значит UPDATE.
SELECT *
FROM `table1` a
LEFT JOIN `table2` b ON a.`чувак`=b.`чувак`
WHERE (b.`чувак` IS NULL or b.`чувак` IS NOT NULL)
GROUP BY a.`чувак`
А теперь у тебя выберутся все записи, далее проверяй, является ли запись из таблицы b NULL, или нет, и если действительно является - значит там чувака нет, если есть - значит UPDATE.
Спустя 7 минут, 31 секунда (16.08.2011 - 22:45) rooor написал(а):
Может будете смеяться, но пробовал ещё так:
$table2=mysql_query("SELECT name FROM table2 WHERE week='$week'");
$x=0;
while ($res=mysql_fetch_assoc($table2)) {
$res1[$x]=$res["name"];
$x++;
}
$table1=mysql_query("SELECT * FROM users WHERE week='$week'");
while ($result=mysql_fetch_assoc($table1))
{
if (array_search($result, $res1)==TRUE){ UPDATE }
else { INSERT }
}
Спустя 52 минуты, 31 секунда (16.08.2011 - 23:38) inpost написал(а):
rooor
Я же тебе код дал! Ты его пробовал запустить?
Я же тебе код дал! Ты его пробовал запустить?
Спустя 9 часов, 26 минут, 26 секунд (17.08.2011 - 09:04) rooor написал(а):
Цитата (inpost @ 16.08.2011 - 19:38) |
SELECT * <...> и если действительно является - значит там чувака нет, если есть - значит UPDATE. |
т.е. как я понял, этот запрос сравнивает в две таблицы на наличие "чувака". Если он есть и там и там, то - UPDATE.
Но мне надо выбрать из первой таблицы имя(неизвестное), проверить есть ли оно во второй таблице, если есть - UPDATE, нет - INSERT, и так до конца списка по каждому имени...
Извините, если что)) я только учусь
Спустя 1 час, 9 минут, 25 секунд (17.08.2011 - 10:14) inpost написал(а):
у тебя есть доступ к PMA, сделай запрос и посмотри (SQL-запрос)
У тебя вернётся:
1. | чувак | данные из второй таблицы
2. | чувак | данные из второй таблицы
3. | чувак |
4. | чувак |
5. | чувак | данные из второй таблицы
Вот там где пусто - данных из второй таблицы нет. Итого ты получишь все записи, останется лишь разделить их в PHP коде на те, где есть запись и те, где нет записи.
А ещё можешь другим запросом воспользоваться: INSERT UPDATE DUPLICATE , синтаксис посмотри в учебнике или любом другом мануале.
У тебя вернётся:
1. | чувак | данные из второй таблицы
2. | чувак | данные из второй таблицы
3. | чувак |
4. | чувак |
5. | чувак | данные из второй таблицы
Вот там где пусто - данных из второй таблицы нет. Итого ты получишь все записи, останется лишь разделить их в PHP коде на те, где есть запись и те, где нет записи.
А ещё можешь другим запросом воспользоваться: INSERT UPDATE DUPLICATE , синтаксис посмотри в учебнике или любом другом мануале.
Спустя 8 минут, 5 секунд (17.08.2011 - 10:22) rooor написал(а):
Всё, решил вопрос) Спасибо за подсказки.
Можно закрывать
Можно закрывать
Спустя 7 дней, 37 минут, 14 секунд (24.08.2011 - 10:59) rooor написал(а):
Блин... не могу задачку решить...
2 таблицы сравнил, данные получил. Всё в норме, но...
1-я таблица - список всех работников со стажем и должностью
2-я таблица - время работы каждого из них на объекте.
3-я таблица - вот в неё нужно свести данные из первых двух.
Пример:
"работник1" дежурил за неделю 3 раза по 2 часа, 1 раз на складе, 2 других раза - на кпп
Соответственно во второй таблице появляется 3 записи:
работник1 | склад | 02:00:00
работник1 | кпп | 02:00:00
работник1 | кпп | 02:00:00
Нужно в третью таблицу внести работника и посчитать общее время работы на каждом объекте. Т.е. третья таблица должна выглядеть так:
имя | склад | кпп |
работник1 | 02:00:00 | 04:00:00 |
Помогите, пожалуйста...
Время дежурства будет меняться в течении недели, т.е. если в третьей таблице есть запись на этого работника, то время должно прибавиться
2 таблицы сравнил, данные получил. Всё в норме, но...
1-я таблица - список всех работников со стажем и должностью
2-я таблица - время работы каждого из них на объекте.
3-я таблица - вот в неё нужно свести данные из первых двух.
Пример:
"работник1" дежурил за неделю 3 раза по 2 часа, 1 раз на складе, 2 других раза - на кпп
Соответственно во второй таблице появляется 3 записи:
работник1 | склад | 02:00:00
работник1 | кпп | 02:00:00
работник1 | кпп | 02:00:00
Нужно в третью таблицу внести работника и посчитать общее время работы на каждом объекте. Т.е. третья таблица должна выглядеть так:
имя | склад | кпп |
работник1 | 02:00:00 | 04:00:00 |
Помогите, пожалуйста...
Время дежурства будет меняться в течении недели, т.е. если в третьей таблице есть запись на этого работника, то время должно прибавиться
Спустя 23 часа, 11 минут, 13 секунд (25.08.2011 - 10:10) rooor написал(а):
Подскажите, как можно "по нормальному" написать следующий код.
Таблица job - в ней находятся данные по дежурствам: фио, объект на котором дежурили, время дежурства
Таблица statistic - сводная, в ней список работников и общее время дежурсва на каждом объекте
Таблица job - в ней находятся данные по дежурствам: фио, объект на котором дежурили, время дежурства
Таблица statistic - сводная, в ней список работников и общее время дежурсва на каждом объекте
$sql=mysql_query("SELECT * FROM `job` WHERE `week`='34'") or die(mysql_error()); // Выбираем данные за неделю
while($res=mysql_fetch_assoc($sql)){
$stat=mysql_query("SELECT `fio` FROM `statistic` WHERE `week`='34'") or die(mysql_error()); // Вытаскиваем фио для проверки на наличие
$x=1;
while($stat1=mysql_fetch_assoc($stat)){
$result[$x]=$stat1['fio'];
$x++;
}
if (array_search($res['fio'],$result)==TRUE){ //Проверяем фио, если есть - обновляем, нет - записываем
// UPDATE в таблицу `statistic`
} else {
// INSERT в таблицу `statistic`
}
}
Спустя 2 часа, 15 минут, 47 секунд (25.08.2011 - 12:26) rooor написал(а):
Большое спасибо всем, за то, что не написали ответы на мои последующие вопросы))
Серьёзно) Благодаря этому я сам разобрался, теперь хоть понял что к чему и каким образом)
inpost
Отдельное спасибо за терпение) Представляю как ты меня матом покрывал
Сейчас ещё один вопрос назревает, но пока попробую сам разобраться...
Серьёзно) Благодаря этому я сам разобрался, теперь хоть понял что к чему и каким образом)
inpost
Отдельное спасибо за терпение) Представляю как ты меня матом покрывал
Сейчас ещё один вопрос назревает, но пока попробую сам разобраться...
Спустя 4 часа, 1 минута, 28 секунд (25.08.2011 - 16:27) inpost написал(а):
rooor
Не все находятся на форуме каждый день и каждую минуту. Знающий увидел - желающий помог.
Не все находятся на форуме каждый день и каждую минуту. Знающий увидел - желающий помог.