update (mysql)

6 отговора 214 прегледа
#1

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);
.....
}

Отговор
в отговор на k #2

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

Само две команди -- сървера трябва да изработи същия брой редове, но пестиш време от скедюлинг, нетворк трафик и най-важното казваш на съвера кво искаш па той да си го оптимизира както намери за добре, а не на час по лъжичка.

Командите са идейни -- не съм ги тествал и даже не знам дали има подобен синтаксис на мъсял.

Отговор
в отговор на baj L\bo #3

Re: update (mysql)

На какъв език е това???? Човече, нищо не ти се разбира!

Отговор
в отговор на gonzales #4

sorry нещо се отплеснах

идеята е че работата може да се свърши с две команди вместо да се върти цикъл. Дали става на mySQL не знам.

Отговор
в отговор на gonzales #5

Re: update (mysql)

na BHUNDI e
koito ne go e u4il v u4ili6te sega da strada :-)

E tuk ni6to niama :[линк]
Отговор
в отговор на бaй Любo #6

Re: sorry нещо се отплеснах

не бе, просто думички като:
"сетове', "нетворка", "скедюлне", "репортне"
и най-вече
"мъсял"...
иначе идеята е ясна и бачка, дори на Access (не че съм го пробвал ;-)

Отговор
в отговор на ro6avia #7

Re: update (mysql)

Толкова смях ми докара, че ще тни подаря филм на Monty Python, освен ако не ги имаш 'сичките!!! (тогава ти ще трябва да дадеш да запиша)
ХАХАХАХАХАХАХА

Отговор