Autor | Zpráva | ||
---|---|---|---|
peta Profil |
#1 · Zasláno: 29. 2. 2008, 14:13:33
Vedel by nekdo dotaz pro vypsani vsech kolizi v tabulce rezervaci uceben?
Mozna by stacil script, ktery by nasel kolizi pro prave vkladany zaznam, abych mel jistotu, ze je tam OK. Tam jsem nepochodil, kdyz jsme zadal <= a >= . Momentalne to resim cyklem pro vsechny zaznamy, ale neni to uplne ono. tabulka vypada takto: uč datum od - do účel vložil vloženo v H2 14.01.2008 09:00 - 12:00 zápočet KS,CZV Koxxxova 03.12.2007 1.0 H2 14.01.2008 09:00 - 13:00 zkouška janak 05.12.2007 1.0 H3 11.01.2008 08:00 - 12:10 zkouška Koxxxová 28.11.2007 1.0 H3 11.01.2008 08:50 - 11:20 testy AJ Harxxxová 04.11.2007 1.0 ucebna / datum_od / datum_do / ucel / vlozil_kdo / vlozil_kdy / verze programu ktera vlozeni spachala Dotazy, co pouzivam, vypadaji asi takto: $dotaz2 = "SELECT * FROM `".$CFG['SQL_prefix']."rezervace` ORDER BY `ucebna`, `od`, `vlozeno`"; $dotaz1 = "SELECT * ". " FROM `".$CFG['SQL']['prefix']."rezervace` ". " WHERE `ucebna` = '$ucebna'". " AND (($datum_od<`od` AND `od`<$datum_do)". " OR ($datum_od<`do` AND `do`<$datum_do)". " OR (`od`<$datum_od AND $datum_od<`do`)". " OR (`od`<$datum_do AND $datum_do<`do`))"; cili if ( ($a<$x && $x<$b) || ($a<$y && $y<$b) || ($x<$a && $a<$y) || ($x<$b && $b<$y)) uz jsem se na to driv ptal ... http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=3&topic=65 962 |
||
Kajman_ Profil * |
#2 · Zasláno: 29. 2. 2008, 15:21:25
kolize...
where ucebna = '$ucebna' and od<'$datum_do' and do>'$datum_od' |
||
peta Profil |
#3 · Zasláno: 29. 2. 2008, 15:46:19
Kajman_
to si predstavujes moc jednoduse :) podminkou je, aby pridavana rezervace x-y: - nebyla uvnitr zadane [... x--y ...] - nebyla kolem jiz zadane x---[...]---y , proto tolik podminek a<x<b a<y<b x<a<y x<b<y ale mozna mne neco napadlo... |
||
Kajman_ Profil * |
to si predstavujes moc jednoduse
Je to jednoduché. Stačí nalézt ty, co začínají před koncem a zároveň končí po začátku. A hledat kolize v již naplněné tabulce také není nic složitého... select t1.*,'koliduje s',t2.* from rezervace t1, rezervace t2 where t1.ucebna=t2.ucebna and t1.od<t2.do and t1.do>t2.od and t1.id>t2.id |
||
Časová prodleva: 3 dny
|
|||
peta Profil |
#5 · Zasláno: 3. 3. 2008, 09:21:06 · Upravil/a: peta
Mno, ja bych chtel hledat kolizi, ktera jeste neni zapsana.
A samozrejme toto se mi hodi taky, potrebuji tez kontrolu. Dik. Kazdopadne si to predstavujes prilis jednoduse :) ucebna='$ucebna' and od<'$datum_do' and do>'$datum_od' t1.ucebna=t2.ucebna and t1.od<t2.do and t1.do>t2.od and t1.id>t2.id ucebna && a<y and b>x podminky vypadaji takto: ...........a.........b........... .[...].[...a...].[...b...].[...]. 1 2 3 4 ...........a..[...]..b........... 5 .......[...a.........b...]....... 6 kolize nastava pri 2 3 5 6. Tyto 4 podminky to musi splnit. Ty pises jenom 2, coz je podivne. 1 a<y NE, b>x ANO, celkem NE - ok 2 a<y ANO, b>x ANO - celkem ANO - ok 5 a<y ANO, b>x ANO - celkem ANO - ok 3 a<y ANO, b>x ANO - celkem ANO - ok 4 a<y ANO, b>x NE - celkem NE - ok 6 a<y ANO, b>x ANO - celkem ANO - ok Hm, tak asi jo. Jeste to musim promyslet, dik :) jeste to napisi uplne, kdyby to nekdo potreboval x<y a<y b>x 1 x<a y<a x<b y<b 2 x<a y>a x<b y<b 3 x>a y>a x<b y>b 4 x>a y>a x>b y>b 5 x>a y>a x<b y<b 6 x<a y>a x<b y>b Mno, a jeste vyzkouset a doplnit rovnitka :) |
||
Kajman_ Profil * |
#6 · Zasláno: 3. 3. 2008, 09:27:36
Ty pises jenom 2, coz je podivne.
Je divné, že nedokážete pochopit tak jednoduchou věc. Nezajímají vás termíny, které skončily před začátkem vkládaného a ani ty, které začínají po skončení vkládaného záznamu. Dvě jednoduché podmínky. |
||
peta Profil |
#7 · Zasláno: 3. 3. 2008, 09:52:01 · Upravil/a: peta
Jasne, ale je treba zkontrolovat, zda tyto podminky vyhovuji rovnici nebo ne. Coz je samozrejme v poradku.
Jinymi slovy, ze ty 4 moznosti vyhovuji rovnici jeste neznamena, ze ostatni 2 platne nekolizni rezervace mohou tez rovnici vyhovovat. Cili o nic neslo, jen jsem tve podminky proveroval a jsou v poradku. Bylo by jednodussi si to vypsat hned na zacatku kompletne a najit shodu. |
||
peta Profil |
#8 · Zasláno: 3. 3. 2008, 10:56:49 · Upravil/a: peta
Ten dotaz
$dotaz2 = "SELECT `t1`.*,'koliduje s',`t2`.* FROM `".$CFG['SQL_prefix']."rezervace` `t1`, `".$CFG['SQL_prefix']."rezervace` `t2` WHERE `t1`.`ucebna`=`t2`.`ucebna` AND `t1`.`od`<`t2`.`do` AND `t1`.`do`>`t2`.`od` AND `t1`.`id`>`t2`.`id` ORDER BY `t1`.`ucebna`, `t1`.`od`, `t1`.`vlozeno`"; Ma jednu takovou drobnou chybu. Nezobrazi mi par ke kolizni rezervaci v pripade, ze kolize nastava pouze u 2 pripadu. Je mi jasny, ze tam jde o spravnou podminku a zrovna tohle nestaci `t1`.`id`>`t2`.`id` . S tim si snad nejak poradim, zkusim jiny zapis, mozna SELECT v SELECTu ... vyreseno SELECT na SELECT DISTINCT `t1`.`id`>`t2`.`id` na `t1`.`id`!=`t2`.`id` |
||
Kajman_ Profil * |
#9 · Zasláno: 3. 3. 2008, 11:35:18
Tipnul bych, že v aplikaci nevypisuje všechny sloupečky, jinak tam uvidíte oba kolizní termíny v jednom řádku.
Zkuste si ten dotaz s > např. v pma, ať víte o čem mluvím. |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0