ugrás a tartalomhoz

Egy-több kapcsolat 2 mysq tábla közt

Anonymous · 2006. Jún. 20. (K), 21.32
hali!

a témában szerelplő dolgot úgy próbáltam megoldani hogy van egy klub-tábla amiben egy auto_increment id, a klub neve, és székhelye található
és van egy klub_csoport tábla amiben egy szintén auto increment id mező található és 4 másik mező klub_id1, klub_id2 ... amiben a klub tábla id száma irható be..

A dolog lényege az lenne hogy a fixen megadott klubbokat tetszés szerint lehessen párosítani egy másik kapcsoló táblába... mint ahogy le is irtam..

viszont a gond az hogy nem tudom milyen lekérdezést irjak arra (lehetőleg egy darabot), aminek a bemenete a kapcsoló tábla auto_inc. es id-je és ebből megkapom a klubbok nevét, székhelyét stb.. attól függően hogy hány van megadva.. vagyis kimenetnek valami ilyesmi :

kapcsoló táblás id : 3 volt
klub1: csili vili , Budapest
klub2: me nem megy, Budapest
Ezzel próbálkoztam de nem vezetett sikerre :( =>
$p =mysql_query(" SELECT * FROM kapcs_klub AS kk LEFT JOIN klub AS k
ON kk.klub_id1 = k.klub_id AND kk.klub_id2 = k.klub_id");


segítségeteket előre is köszi bye Tomi
 
1

Itt egy...

Anonymous · 2006. Jún. 20. (K), 22.05
SELECT kk.id,kk.nev,kk.szekhely FROM kapcs_klub
LEFT JOIN klub AS kk ON kk.id = $id
Nem próbáltam, de elvileg mennie kéne ;)
$id = a klub id-je.
3

öö szerintem félreértettél

Anonymous · 2006. Jún. 20. (K), 22.21
Van a klubok tábla ahol vannak a klubbok adatai (név, székhely...) mindegyik egyedi id-vel

és van a kapcsolótábla.. amiben a köv mezők vannak:
-kapcs_id
-klub_id_1
-klub_id_2
-klub_id_3

A probléma hogy ha
SELECT * FROM kapcsolo 
LEFT JOIN klubok 
ON klubok.id = kapcsolo.klub_id1
WHERE kapcs_id = 2
alapján megtudom hogy a kapcsoló tábla 2es id-ü csoport első eleme ez a klubb $valtozo['nev'] ezzel a szákhellyel $valtozo['szekhely'] viszont a többi klubnak az adatait nem tudom meg..

már próbáltam azzal is hogy:
SELECT * FROM kapcsolo 
LEFT JOIN klubok ON klubok.id = kapcsolo.klub_id1
LEFT JOIN klubok ON klubok.id = kapcsolo.klub_id2
LEFT JOIN klubok ON klubok.id = kapcsolo.klub_id3
WHERE kapcs_id = 2
de itt egy fetch_assoc után még mindig csak $valtozo['nev'] formában jön ki a cucc, és igy jóesetben is csak egy klub adatait nyerem ki :(

remélem igy már érthetőbb a problem..

bye Tom
2

mit szeretnél?

Hodicska Gergely · 2006. Jún. 20. (K), 22.17
Írd le légyszi, hogy pontosan mit szeretnél elérni, ne pedig, hogy milyen struktúrával próbálkozol, mert nekem valami sántít ebben a kialakításban, és az a left join is gyanús.


Felhő
4

struktura nélkül :D

Anonymous · 2006. Jún. 20. (K), 23.02
A versenyeken egy induló adott esetben nem 1 klub szineiben indúl hanem 2-3 képviseletében, ami többször is megeshet (nem ugyan az az edző)
ezt kö megoldani úgy hogy van egy klubok tábla, meg az eredmények tábla
5

OFF

monghuz · 2006. Jún. 20. (K), 23.04
én voltam az elöbb csak valamiért kiléptetett
6

kapcsoló tábla

Hodicska Gergely · 2006. Jún. 21. (Sze), 00.26
Akkor egy lehetséges rugalmasabb megoldás lehet: klub tábla (klub_id), indulo tábla (indulo_id), verseny tábla (verseny_id), és akkor lehet mondjuk egy nevezesek kapcsoló táblád, aminek 3 mezője van: klub_id, indulo_id, verseny_id. Ha valaki nevez egy versenyre, akkor ebbe a táblába annyi sor kerül, ahány klub nevében nevez. És akkor ebből bármit le lehet kérdezni. Pl. adott klub színeiben nevezett userek nevei:
SELECT 
    i.name
FROM
    klub k
JOIN
    nevezesek n
    ON k.klub_id = n.klub_id
JOIN
    indulo i
    ON n.indulo_id = i.indulo_id
WHERE
    k.klub_id = X
Felhő
7

ezt sajnos nem jó :(

monghuz · 2006. Jún. 21. (Sze), 01.26
Az a para hogy lehet olyan is hogy 1 klubon belül 2 edző, vagy 2 klub 2 külön edző párosításban ... ráadásúl az indulók se egydül vannak, hanem legalább 2-en max 16-an .. igy a te általad javasolt megoldásban a lerosszabb esetet feltételezve 16 induló egy csapatban, 2 klub 3 edző: 2*3*16 rekord egyetlen csapatnak?? (már ha jól értelmeztem)

arra sehogy sincs lehetőség hogy egy tábla több külömbözö számokat tartalmazó mezőjéhez egy másik tábla legyen az id-i által összekapcsolva?


sajna elég összetett a redszer, ami többé kevésbbé mükszik is, de a firssítése nagyon macerás a redundáns adatok miatt ezért is akarom több táblára bontani
8

mit szeretnél? II ;)

Hodicska Gergely · 2006. Jún. 21. (Sze), 01.38
Az előző kérdésedben szó sem volt edzőről, meg hasonlókról (csapat). De ettől függetlenül egy kapcsoló tábla kb. így működik, az nem a legjobb megoldás, hogy ha mondjuk A, B táblát szeretnéd összekapcsolni, akkor B táblába felveszel A1_id, A2_id, A3_id mezőket. Mi van akkor, ha menetközben kiderül, hogy mégis kéne, hogy B-hez tartozhasson 4 A?


Felhő
9

bocsi :$

monghuz · 2006. Jún. 21. (Sze), 11.23
hát csak azért nem irtam mert az edzo,klub,csapat kapcsolótáblák mind ugyan úgy épülnek fel...
Amit te mondasz kapcsolást olyna módon csinálom meg mondjuk felhasználó és lakhelyek közti kapcsolatot.. viszont ott egy felhasználóhoz egy lakhely tartozik.. most viszont egy eredményhez több klub,csapattag,edzo tartozik...

Most arra gondoltam hogy kiiratás elött egy tömbbe kiszedem az összes edzőt (~50), klubot(~30) és az id-ket párosítom a tömb elemeivel...

már csak az lenne a kérdésem, hogy ha a versenyzok névsorát is igy tömbberakom, (~600 név) akkor az nagyon leterheli a rendszert??

jah és köszi az eddigi helpet.

Tom