TORU Foorum

Aidake php mysql skriptiga

DolphinDream - 20.5.2010 09:57

Mul endal juba juhe koos... :) Ehk on kellegi mõni hea mõte kuidas saaks:

Mul on tabel milles on autosaatelehed, vahel on saatelehel kuni 5 erinevat koormat, vahel vaid üks. Tabelis on autonumber ja koormad column'ina 1_veos, 2_veos... 5_veos.

Mul oleks siis tarvis kuidagi nii, et ma saaksin kogu tabeli kuvada tähestikujärjekorda pandud veoste järgi. Probleem aga selles, et kuidas sortida erinevad column'id nii, et ei oleks korduvaid tulemusi.

Natuke veel selgituseks
tabelis on siis näiteks:

Kood:
[b]auto 1_veos 2_veos 3_veos[/b] 000AAA 0-4 16-32 001AAA 32-64 002AAA 16-32 0-4 64-89



(kusjuures, veoste tähised võivad muutuda, st pole alati 0-4 jne seega ei saa otsingut päris teha nii, et veoste tähiste järgi otsida tabelist iga veosetähis eraldi)

Välja peaks ta printima siis sellisel kujul:

Kood:
0-4 000AAA 0-4 002AAA 16-32 000AAA 16-32 002AAA 32-64 001AAA 64-89 002AAA



Oleks väga tänulik abi eest :)

[Muudetud: 20.5.2010 DolphinDream]

[Muudetud: 20.5.2010 DolphinDream]

JAnx - 20.5.2010 10:14

Koolitöö?

DonQ - 20.5.2010 10:20

Pigem valesti disainitud andmebaas :)
Ma teeksin viis select'i (igaüks auto numbri ja ühe veose veeruga) ja paneksin union'iga kokku. Muud moodi normaalset lahendust ei oska küll ette kujutada.

Timukas - 20.5.2010 10:26

Kuna jõudsin juba DonQ lahenduse enam-vähem ära realiseerida, siis postitan siia:
Kood:
SELECT 1veos AS veos , auto FROM auto WHERE 1veos != "" UNION SELECT 2veos, auto FROM auto WHERE 2veos != "" UNION SELECT 3veos, auto FROM auto WHERE 3veos != "" ORDER BY veos, auto

DolphinDream - 20.5.2010 10:44

Tänud, proovin järele.

Kuidas siis andmebaasi oleks parem disainida?

DonQ - 20.5.2010 10:53

Autode ja veoste seos eraldi koormate tabelisse, kus iga auto ja veose kombinatsiooni kohta sobiv kirje/koorem. See muidugi teeb sisestamise üsna ebamugavaks - pead mingid dünaamilised vormid tekitama, kus kasutaja saab koormaid lisada jne jne. Võimalik, et vaid ühe mitu-mitmele seose tabeli puhul puhul on selline mittenormaliseeritud lähenemine isegi lihtsam, ehkki suure hulga erinevate aruannete puhul peavad kõik päringud sedalaadi (unionidega) olema. Või siis teed sellest ühe vahepäringu (create view jne), mida aruanded kasutavad.

Ma ei tea ju kogu ülesannet ka.

JAnx - 20.5.2010 13:34

Küsisingi sellepärast kas on koolitöö, et vahel antakse koolitöö puhul imelisi ülesandeid, kus õpilane peab lahendama natuke standardist väljas olukorra ja sel juhul poleks andmebaasi disaini muuta tohtinud. Andmebaasi võiks disainida nii, et ühesuguste andmete kordust oleks võimalikult vähe. Mõttetu on teha tabelit, kus on näiteks nimed:
1. Maari Maasikas
2. Kusti Maasikas

Parem oleks teha uus tabel perenimedele ja õige koha peal viidata neile.

1. Maari [1]
2. Kusti [1]

[1] on perenimede baasis vaste Maasikas-le.

DonQ - 20.5.2010 14:19

JAnx, Su näide pole kahjuks ideaalne. Inimene on üsna kindel ühik, tema täisnimi on üks tema identifikaatoritest ja tema andmeid niimoodi tükeldada ei ole üldiselt mõistlik. Eesnimi ja perenimi võivad muidugi eraldi väljades-veergudes olla - sõltub vajadusest.

Erand oleks vast olukord, kus kogu rakenduse põhiülesanne ongi nimede analüüs, siis võib olla mõttekas ees- ja perenimed eraldada - laiemalt võttes siis selline rakendus, kus kumbki nimi eraldi võttes olulist tähtsust omab.

Mis koolitöösse puutub, siis on muidugi (mitut pidi) kurb, kui see siin koolitöö on. Teema autor millegipärast ei öelnud ka :(

JAnx - 20.5.2010 15:06

Jah, tõsi, tahtsin lihtsalt kiire näite tuua :D Loodan, et teema autor saab siiski poindist aru.

DolphinDream - 20.5.2010 15:24

Ei ole koolitöö, unustasin mainida :)

Eks ma vaatan... ehk muudan ära selle andmebaasi siis :)

madish - 20.5.2010 16:03

mis puutub nimedesse, siis ülikooli õppejõud andmebaaside loomise juures on siiani soovitanud ees- ja perenimed eraldi hoida.

DonQ - 20.5.2010 16:07

Eraldi väljades või tabelites? Esimene on üsna naturaalne (ehkki tekitab kombo ja 'incremental search' tüüpi sisestuste juures tsipa peavalu), teise juhu kohta aga ootaks põhjendust, kui see tõesti nii soovitati.

JAnx - 20.5.2010 16:55

Tegelikult ei olegi mõtet vaidlema hakata =) Kõik oleneb täiesti eesmärgist. Üldjuhul nõustusin juba DonQ-ga, kuna tõepoolest, eesnimi ja perenimi võiks isikuga seotud tabelisse käia. Ei kujutagi ette, kus minu poolt toodud näidet üldse kasutada saaks/võiks.

Just perenimede kohta.

[Muudetud: 20.5.2010 JAnx]

madish - 20.5.2010 18:59

ikka eraldi väljades jah, eraldi tabelites oleks natuke jabur neid hoida, juhul, kui pole mingi nimestatistika andmebaas.