малко сложна заявка

Skorostrelko

Registered
Здравейте,
Имам таблица със следните редове:
blok, vhod, obsht-broi, izpolzvani, ostavat
Как трябва да изглежда заявката, за да изкара списък с всички блокове и входове и спрямо това, колко общо има и колко са използвани да изчили в последната колона колко остават. Става въпрос за едни кабели :)
 
след цяла седмица блъскане имам малко напредък, но дотам. Успях да извадя списъка с блоковете и входовете, както и да си сметна разликата между общия брой кабели и оставащите. Само, че за да ги сметне трябва да разбера колко са използвани и това вече ми се опря съвсем. При положение, че в един блок и вход има n на брой хора как да ги преброи във всеки блок и вход по отделно колко са за да си попълня колконата "използвани кабели"?
Ето така си вадя списъка с блокове и входове:
PHP:
        $result = mysql_query("SELECT * FROM clients ORDER BY data DESC"  ) 
                or die(mysql_error());  
        while($row = mysql_fetch_array( $result )) {
echo '<tr><td>кв.' . $row['kvartal'] . ' бл.' . $row['blok'] . ' вх.' . $row['vhod'] . ' ет.' . $row['etaj'] . ' ап.' . $row['apartament'] . '</td></tr>';
}
Така си смятам разликата:
PHP:
$obshto_kabeli=$row['obshto_kabeli'];
$izpolzvani_kabeli=$row['izpolzvani_kabeli'];
$problemni_kabeli=$row['problemni_kabeli'];
$svobodni=$obshto_kabeli-($izpolzvani_kabeli+$problemni_kabeli);
 
Доколкото разбирам 'stoinost1' и 'stoinost' трябва да е число... тоест всеки блок и вход трябва да се опише по отделно ли?
 
Skorostrelko каза:
Доколкото разбирам 'stoinost1' и 'stoinost' трябва да е число... тоест всеки блок и вход трябва да се опише по отделно ли?
Само съвет. Дай примерни записи и опиши нагледно кое какво е и какво искаш. Както си ги извадил просто добавяш още една променливата $ostavat ето така
$ostavat = $obsht-broi - $izpolzvani
Обаче като гледам ти имаш и други колони пък и не знам за кое е този общ брой? Вход, блок или квартал? Как се прави връзката м/у блок и входовете и т.н.
Така никой няма да мисли нещо без да си обяснил точно.
 
вярно, че е много уплетено, но и аз не съм сигурен дали съм структурирал нещата по най-добрия начин. Ще пробвам да разасня.
Имам една таблица с колони: kvartal, blok, vhod, etaj, apartament, ime na klient и avtice (което е 0 или 1). В тази таблица има записани няколко стотин клиента.
Втората таблица има колони: obshto kabeli, zaeti kabeli, ostavashti kabeli.
Идеята е следната. Във всеки вход на блок има po 12 кабела и да кажем, че на бл.123 вх.А има 2 клиента. Значи искам от тези 12 кабела да се извадят 2 и резултата да е 10 разбира се :). пресмятането е ок, но преди това нали трябва да запиша стойност за използваните кабели. Това ми е проблема. как да преброя във всеки блок и вход колко клиента има. Разбира се при въвеждането на клиентите си ги маркирам като active, за да може на тази база да ги преброя после. Надявам се, че успях да обясня :)
 
Код:
SELECT count( vhod ) FROM таблица WHERE blok =1 AND vhod =1
Това при положение, че блок и вход са ти числа и ти си селектираш предварително кой блок и вход искаш да видиш. Аз не бих структорирал така таблиците. Всъщност obsht-broi и izpolzvani не са нужни щом obsht-broi е винаги 12, а izpolzvani е бройката на клиентите.
Аз бих си направил 3 таблици. В едната се записват само клиенти, в другата само блокове и входове и в третата кабелите. И всяка таблица има колона за уникално id на всеки запис. И така ще стане като категории и подкатегории към новини. Мисля, че това последното ще те ориентира добре.
 
Ами за общия брой на кабелите в 90% от случаите е 12, но има и някой изкл. и са повече, където има голями блокове. За структурирането на таблиците ок. съгласен съм, но какво ще ми помогнат id-тата, за да преброя брой абонати във вход?
 
90% не е 100%
Няма как да направиш тблицата сама да се попълва. Ще трябва да въведеш някои данни на ръка - блокове, входове, клиенти, общо кабели.
id-та не слагай ако искаш, но може да стане и с още една таблица, в която ще се записват връзките между всичките таблици и тогава ще ти потрябват id-та.

Дадох ти пример с категории и подкадегории, защото е подобно даже същото и може да погледнеш някоя система за новини как е направена.
 
Galli тези данни блокове, входове, клиенти и общо кабели си ги въвеждам сам.
Това което сътворих за сега е следното:
В таблицата добавих една колона с име "zaeti_kabeli" където се записва "1" ако е използван кабел и чрез тази заявка:
PHP:
$sum = mysql_fetch_assoc(mysql_query("select SUM(`zaeti_kabeli`) as `total` from `clients` where `blok` = '$blok' and `vhod` = '$vhod' "));
си извеждам броя използвани кабели, като блок и вход си ги селектирам от dropdown меню.
Идеята ми беше да стане без да селектирам предварително, а да си взима стойността за всеки блок и вход по отделно от таблицата и да си изпълни заявката.
 

Горе