Van két táblám:
1: mid(int, autoincrement), mparent(char(32)), msub(char(32)), morder(int)
2: gid(char(32), unique), gname(varchar(255))
Az 1. táblában az mparent, msub a 2. tábla gid mezején keresztül hivatkozik a gname-ra.
A feladat: kilistázni az 1. tábla tartalmát úgy, hogy az mparent, msub helyére a megfelelő gname kerüljön. Belezavarodtam nagyon, segítség kéne...
- 935 megtekintés
Hozzászólások
- A hozzászóláshoz be kell jelentkezni
Igen, de eddig nem jött össze... Ezért kell a segítség. Folyton hibát dobál, és már nem bírom követni... :(
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
select mid,tbl2a.gname as mparent,tbl2b.gname as msub,morder from tbl1,tbl2 as tbl2a, tbl2 as tbl2b where tbl1.mparent=tbl2a.gid and tbl1.msub=tbl2b.gid
tbl1 - 1.tábla neve
tbl2 - 2.tábla neve
- A hozzászóláshoz be kell jelentkezni
Hmm... Na, igen. :D Legtöbbször a legegyszerűbb megoldás a leghatékonyabb. :D
Köszönöm!
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni
Hmm... Mégse teljesen jó... Abban az esetben, ha az mparent üres, az illető sorokat nem veszi figyelembe.
- A hozzászóláshoz be kell jelentkezni
SELECT a.*,b.gname as parentname, c.gname as subname FROM tbl1 a LEFT JOIN tbl2 b ON a.mparent=b.gid LEFT JOIN tbl2 c ON a.msub=c.gid;
Ennek tobb elonye van:
1) eroforraskimelobb, mint a szorzas
2) pontosan annyi rekordot ad vissza, mint az elso tabla rekordszama
3) akkor is igaz a 2), ha a tbl2 ures.
4) ha nincs gname valamelyikhez, akkor oda NULL-t rak
Udv
- A hozzászóláshoz be kell jelentkezni
Igen. Ez már tökéletes. Köszi.
--
Coding for fun. ;)
- A hozzászóláshoz be kell jelentkezni