'multiple' ispis iz baze
Evo slikovit primjer da objasnim šta me zanima. Želim ispisati sve klubove u kojima je neki igrač igrao. Ispis za pojedinačnog igrača nije problem, ali kako prikazali listu svih igrača i klubova u kojima je pojedini igrač igrao?
Upitom sam dobio ovakve podatke (koristeći left join query): ID | IGRAC | RODJEN | KLUB 1 | c. ronaldo | 2000 | real madrid 1 | c. ronaldo | 2000 | manchester 2 | ronaldihno | 1980 | psg 2 | ronaldihno | 1980 | barcelona 2 | ronaldihno | 1980 | milan dakle, kako dobiti ispis svih igrača i klubova, poput ovog: ronaldo - madrid, manchester ronaldihno - psg, barcelona, milan ... Probao sam sa dvostrukim for petljama (jedna za dohvat/ispis svih igrača, a druga za dohvat/ispis klubova svakog pojedinog igrača, ali je dolazilo do blokade) |
Do kakve blokade?
Pretpostaviću da je ID zapravo ID igrača.. ako uradiš ORDER BY id ASC, možeš da prodješ kroz rezultate samo uz poredjenje da li je došlo do promene ID-ja, ukoliko jeste, dohvatiš ime sledećeg igrača i započneš novu listu klubova. |
Do zagušenja (blokade rada,) mi dolazi kada sam koristio dvije funkcije: dohvati_sve_igrace() i unutar nje dohvati_klubove_pojedinog_korisnika(). Za ispis sam opet koristio dvije funkcije, na istom principu, ispiši sve igrače i ispiši za svakog igrača njegove klubove. Mislio sam da li ima neko drugo rješenje jer mi ovo ne daje rezultat (nešto poput neprekinute petlje iako to nije)
|
mozes jednim upitom ovako:
Kôd:
SELECT igraci.*, |
da li u tom slučaju klubove (ID-e) spremam kao jedan string i pomoću explode() ih prebacim u polje[]? jer mi klubovi trebaju kasnije za checkboxove
|
najbolje ti je da jednim upitom pokupis sve klubove (id i naziv), i napravis od toga asocijativni niz gde su ID-jevi klubova kljucevi niza (tj. napravis lookup tabelu koja sluzi da pomocu ID-ja kluba brzo dohvatis ime kluba)
Onda napravis drugi upit kao ovaj u mom primeru, samo umesto imena klubova konketujes id-jeve. Kad prikazujes uradis explode tog polja da bi dobio niz ID-ja, i onda samo u petlji radis sa njima (a za prikaz naziva kluba koristis lookup u onom nizu iz prvog upita, posto imas ID) tako nekako...:) |
to je to, samo da uspijem napraviti:1045:
thanx man:1026: |
A, što mu niko ne reče da mu organizovanje podataka u bazi nije baš najsrećnije pa onda čupanje istih ide... čupavo :)
|
Citat:
|
a na osnovu cega vi vidite njegovu strukturu tabela?
Covek nigde nije naveo kako mu izgleda tabela, samo kako izgledaju podaci nakon JOIN-a.. |
Naprotiv, podaci izgledaju sasvim ok.
I zašto bi imena klubova bila jedinstvena (unique) kada ona to nisu u stvarnosti? Mogao bi da ih načini dodavanjem grada, ali to je samo opcija, nikako da je to jedino ispravno. |
ne znam za Lecter-a ali ja kod ovakvih problema otvorim Tarot. Dubina i oštrina takvog prikaza prevazilaze granice prostor-vremena a rešavaju i probleme sa zubnom gangrenom.
|
imena klubova, ili bilo koji varchar ne treba nikad koristiti kao primary key, sem u retkim slucajevima gde integer ID apsolutno nema smisla (tipa kod sesija, gde je session_id obicno char(32), ali se uvek pristupa preko njega, pa ID polje nema smisla...)
|
I meni se učinilo da Vidak misli na PK, ali izgleda da je mislio da imena treba da budu jedinstvena pa da se kao takva možda iskoriste umesti ID za te checkboxove. To može ponekad da bude rešenje, ali uvek ostaje problem ažuriranja ako se promeni ime kluba.
|
Vreme je GMT +2. Trenutno vreme je 16:25. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.