update (mysql)
6 отговора
214 прегледа
update (mysql)
Някой сеща ли се по-умно решение за долния код. Натрупват се много update
заявки и май не е особено удачно. Приемат се предложения всякакви.
$sql = "SELECT j.JRid, COUNT(u.UEGN) as ZaetiRM FROM T_Jobs j ";
$sql .= "LEFT JOIN T_Employed u ON j.JRid=u.JRid ";
$sql .= "WHERE j.CRid=$rid ";
$sql .= "GROUP BY j.JRid";
$result = @mysql_query($sql,$db);
while ($J = @mysql_fetch_array($result)) {
if ($J[ZaetiRM] > 0) {
$sql = "UPDATE T_Jobs SET ";
$sql .="JNum=".$J[ZaetiRM] . ",";
$sql .="WHERE JRid=$J[JRid]";
} else {
$sql = "DELETE FROM T_Jobs ";
$sql .="WHERE JRid=$J[JRid]";
}
$RET = @mysql_query($sql,$db);
.....
}
заявки и май не е особено удачно. Приемат се предложения всякакви.
$sql = "SELECT j.JRid, COUNT(u.UEGN) as ZaetiRM FROM T_Jobs j ";
$sql .= "LEFT JOIN T_Employed u ON j.JRid=u.JRid ";
$sql .= "WHERE j.CRid=$rid ";
$sql .= "GROUP BY j.JRid";
$result = @mysql_query($sql,$db);
while ($J = @mysql_fetch_array($result)) {
if ($J[ZaetiRM] > 0) {
$sql = "UPDATE T_Jobs SET ";
$sql .="JNum=".$J[ZaetiRM] . ",";
$sql .="WHERE JRid=$J[JRid]";
} else {
$sql = "DELETE FROM T_Jobs ";
$sql .="WHERE JRid=$J[JRid]";
}
$RET = @mysql_query($sql,$db);
.....
}
Re: update (mysql)
По идея sql работи със сетове и така както си го направил имаш отделно обръщение към сървера за всяка операция -- т.е. за всеки ред клиента трябва да изпрати заявка, тя да се изтече по нетворка, да се компилира, да се скедюлне за изпълнение, да репортне на клиента че е готово и айде тогава следващия ред. Аз бих опитал така:
delete T_Jobs where JRid not in (select distinct JRid from T_Employed)
update T_Jobs
set JNum=(select count(u.UEGN) from T_Employed u where u.JRid=j.JRid)
from T_Jobs j
Само две команди -- сървера трябва да изработи същия брой редове, но пестиш време от скедюлинг, нетворк трафик и най-важното казваш на съвера кво искаш па той да си го оптимизира както намери за добре, а не на час по лъжичка.
Командите са идейни -- не съм ги тествал и даже не знам дали има подобен синтаксис на мъсял.
delete T_Jobs where JRid not in (select distinct JRid from T_Employed)
update T_Jobs
set JNum=(select count(u.UEGN) from T_Employed u where u.JRid=j.JRid)
from T_Jobs j
Само две команди -- сървера трябва да изработи същия брой редове, но пестиш време от скедюлинг, нетворк трафик и най-важното казваш на съвера кво искаш па той да си го оптимизира както намери за добре, а не на час по лъжичка.
Командите са идейни -- не съм ги тествал и даже не знам дали има подобен синтаксис на мъсял.
sorry нещо се отплеснах
идеята е че работата може да се свърши с две команди вместо да се върти цикъл. Дали става на mySQL не знам.
Re: update (mysql)
na BHUNDI e
koito ne go e u4il v u4ili6te sega da strada :-)
E tuk ni6to niama :[линк]
koito ne go e u4il v u4ili6te sega da strada :-)
E tuk ni6to niama :[линк]
Re: sorry нещо се отплеснах
не бе, просто думички като:
"сетове', "нетворка", "скедюлне", "репортне"
и най-вече
"мъсял"...
иначе идеята е ясна и бачка, дори на Access (не че съм го пробвал ;-)
"сетове', "нетворка", "скедюлне", "репортне"
и най-вече
"мъсял"...
иначе идеята е ясна и бачка, дори на Access (не че съм го пробвал ;-)
Re: update (mysql)
Толкова смях ми докара, че ще тни подаря филм на Monty Python, освен ако не ги имаш 'сичките!!! (тогава ти ще трябва да дадеш да запиша)
ХАХАХАХАХАХАХА
ХАХАХАХАХАХАХА