Forum » Programiranje » [sql] problem
[sql] problem
tx-z ::
Rabim en select stavek in sicer je sledeče.
Imamo profesorje. Vsak profesor ima lahko nek predmet. Nek predmet ima lahko tudi več profesorjev in sicer na dva načina:
*predmet mata recimo 2 ločena profesorja ki sta izvajalca tega predmeta,
*predmet mata 2 profesorja vendar sta skupna izvajalca predmeta.
Baza je tko da mam
izvajalec [zap_id, leto_id, pred_id, delitev_studenta, delitev_snovi]
zaposlenec [zap_id, zap_priimek, zap_ime,...]
zap_id predstavlja pač zaporedno številko, leto zaporedno številko leta, pred_id predstavlja id predmeta, če je 1 pri delitev študenta sta profesorja izpisana ločeno, če pa 1 na delitev snovi pa sta skupna izvajalca in se izpišeta skupaj.
Recimo sledeči select stavek
$sql = 'SELECT * from izvajalec i, zaposlenec z WHERE i.zap_id=z.zap_id AND i.pred_id='.$predmet.'';
bi vrnil vse izvajalce, ne glede na to ali imata predmet skupaj ali ločeno-vsakega v svoji vrstici. Rabil bi pa tak stavek, da če bi v dveh zaporednih zapisih, recimo:
V tem primeru bi ju izpisal ločeno (dve vrstici)...Torej izvajalec 1 in izvajalec 2..
V sledečm primeru
Bi ju pa izpisal v isti vrstici, ločeni z vejico.
Uglavnm baze ne morm spreminjat tko da bi mogu met tako poizvedbo, pa ne vem kako bi to rešu.. :S A kdo lahko pomaga? Upam da sm kokrtok razumljivo napisu..
Imamo profesorje. Vsak profesor ima lahko nek predmet. Nek predmet ima lahko tudi več profesorjev in sicer na dva načina:
*predmet mata recimo 2 ločena profesorja ki sta izvajalca tega predmeta,
*predmet mata 2 profesorja vendar sta skupna izvajalca predmeta.
Baza je tko da mam
izvajalec [zap_id, leto_id, pred_id, delitev_studenta, delitev_snovi]
zaposlenec [zap_id, zap_priimek, zap_ime,...]
zap_id predstavlja pač zaporedno številko, leto zaporedno številko leta, pred_id predstavlja id predmeta, če je 1 pri delitev študenta sta profesorja izpisana ločeno, če pa 1 na delitev snovi pa sta skupna izvajalca in se izpišeta skupaj.
Recimo sledeči select stavek
$sql = 'SELECT * from izvajalec i, zaposlenec z WHERE i.zap_id=z.zap_id AND i.pred_id='.$predmet.'';
bi vrnil vse izvajalce, ne glede na to ali imata predmet skupaj ali ločeno-vsakega v svoji vrstici. Rabil bi pa tak stavek, da če bi v dveh zaporednih zapisih, recimo:
izvajalec: *1 10 222 1 0 *2 10 222 1 0
V tem primeru bi ju izpisal ločeno (dve vrstici)...Torej izvajalec 1 in izvajalec 2..
V sledečm primeru
izvajalec: *3 10 333 0 1 *4 10 333 0 1
Bi ju pa izpisal v isti vrstici, ločeni z vejico.
Uglavnm baze ne morm spreminjat tko da bi mogu met tako poizvedbo, pa ne vem kako bi to rešu.. :S A kdo lahko pomaga? Upam da sm kokrtok razumljivo napisu..
tx-z
- spremenilo: tx-z ()
WarpedGone ::
Še ena klasika, ki ne paše najbolje v samo SQL zasnovo - transponiranje vrstic v stolpce.
Stvar je rešljiva, vendar moraš:
a) vnaprej predvidit max število elementev v seznamu ločenem z vejico in za vsako mesto napisat svoj subselect, potem pa rezultate združit en dolg string
b) napisat proceduro ki vrne string katerega prikažeš kot eno polje v zapisu
SQL pač ni proceduralni jezik. Tough luck.
Stvar je rešljiva, vendar moraš:
a) vnaprej predvidit max število elementev v seznamu ločenem z vejico in za vsako mesto napisat svoj subselect, potem pa rezultate združit en dolg string
b) napisat proceduro ki vrne string katerega prikažeš kot eno polje v zapisu
SQL pač ni proceduralni jezik. Tough luck.
Zbogom in hvala za vse ribe
tx-z ::
a) Max elementov ločenih z vejico je 3. Torej 1 ali 2 ali 3 v isti vrstici ali pa so lahko tudi še v ločenih vrsticah.
tx-z
Zgodovina sprememb…
- spremenilo: tx-z ()
WarpedGone ::
nardiš subselect ki vedno vrne zapis iz prve vrstice, drug subselect, ki vrne zapis iz druge vrstice in tretjisubselect, ki vedno vrne zapis iz tretje vrstice.
Te tri rezultate nato zlimaš v en string, kjer med zapise dodaš vejico, kadar naslednji zapis ni NULL.
Kako točno to izvedeš je odvisno do baze. MySQL?
Te tri rezultate nato zlimaš v en string, kjer med zapise dodaš vejico, kadar naslednji zapis ni NULL.
Kako točno to izvedeš je odvisno do baze. MySQL?
Zbogom in hvala za vse ribe
tx-z ::
Ja MySQL. Problem k recimo lah mam en predmet k majo 3je prfoksi. Recimo
1) Novak, Kotnik
2) Simonič
...Torej 2 k ga mata skupi, pa še pol en k ma ločeno
1) Novak, Kotnik
2) Simonič
...Torej 2 k ga mata skupi, pa še pol en k ma ločeno
tx-z
WarpedGone ::
No, najprej stuhtaj kako dobiš vrednost iz nekega polja v drugi vrstici.
Iz tega lahko pol sezidaš celo rešitev.
Iz tega lahko pol sezidaš celo rešitev.
Zbogom in hvala za vse ribe
tx-z ::
A lahko kdo mogoče mal bl pomaga, kr nimam kej preveč pojma s temi select stavki ... :/
tx-z
tx-z ::
Ni treba več, hvala :) Sm kr eno poizvedbo naredu pa to vseskp shranu, potem pa z if stavki preureju :)
tx-z
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | mySQL izpis many-to-many to matrixOddelek: Izdelava spletišč | 891 (652) | klemenSLO |
» | [PHP]Zajem podatkov iz bazeOddelek: Programiranje | 4038 (3675) | cobrica |
» | vb mysql dataset updateOddelek: Programiranje | 1242 (1122) | korenje3 |
» | [SQL] PgAdmin preprosto vprasanje povezano s stolpci v tabeliOddelek: Programiranje | 2197 (1556) | Cvele2011 |
» | [Access 2007]Oddelek: Programiranje | 2627 (2227) | urosz |