Autor | Zpráva | ||
---|---|---|---|
halogan Profil |
#1 · Zasláno: 11. 12. 2005, 11:35:17 · Upravil/a: halogan
Dobry den,
dlouho jsem nepracoval s SQL a ted bych potreboval takovou malou pomoc. Potrebuji vybrat data ze dvou tabulek, kde se ale bude motat i treti tabulka. Situace je nasledujici: articles: sloupce id, name, ... tags: sloupce id, tag, url tags_articles: sloupce id, article_id, tag_id Jde mi o to, abych jednou, maximalne dvema query vybral X clanku a k nim jejich tagy. Podarilo se mi vybrat vsechny clanky a k nim tagy pres group, ale to pak nemuzu stanovit X clanku. Nejlepsi by bylo, aby byl vystup:
Proste takovy implode/join v SQL prikazu. Napadaji me dve reseni: 1) Vybrat vsechny tagy a tags_articles a udelat z toho takove velke pole a pak vybrat jen clanky a ke kazdemu priradit tagy. 2) To, co potrebuji :) Jinak predkladam schema tabulek Diky za napady. |
||
Martin Profil |
#2 · Zasláno: 11. 12. 2005, 12:02:06 · Upravil/a: Martin
Moc tomu nerozumím, ale zkusil bych to takhle
Kdyby to bylo, to co potřebuješ, tak tabulka tags_articles je tam zbytečně |
||
halogan Profil |
#3 · Zasláno: 11. 12. 2005, 12:07:16
Asi me nechapes: tags_articles je tam z duvodu toho, ze clanek muze mit vic tagu. Tvym zpusobem dostanu kazdy clanek na x radku, kde x je pocet tagu, ja potrebuji X jako 1.
|
||
Kajman_ Profil * |
#4 · Zasláno: 11. 12. 2005, 14:56:11
Od verze 4.1 lze použít GROUP_CONCAT, které může dát více hodnot po group by do jednoho stringu, ale v tomhle případě bych možná udělal opravdu zmíněný select, kdy dostaneš pro každý článek x řádků, ale v programu si zkontroluješ, zda to id stále zpracováváš nebo je jinačí. Možná to rozhodit na dva.. první jen tagy a id článku s x řádky a nascpat to třeba do pole a pak druhý na články a tam si hodnoty z toho pole vyvolat.
|
||
halogan Profil |
#5 · Zasláno: 11. 12. 2005, 15:33:59
Kajman: Zda se mi to, nebo mi pokazde pomuzes ty? :) Diky moc, pomohlo to:
select a.id, a.name, group_concat(t.tag separator ", ") from articles a, tags t, tags_articles ta where a.id = ta.article_id and ta.tag_id = t.id group by id Jeste si s tim pohraju a bude to idealni. |
||
halogan Profil |
#6 · Zasláno: 11. 12. 2005, 16:23:44 · Upravil/a: halogan
Jeste se potykam s jednim problemkem. Sice vse funguje jak ma. Potrebuji vybrat vsechny polozky s tagem treba "foo", ale kdyz dam podminku t.tag = "foo", tak mi to pak do toho group_concat zahrne jen "foo".
Snad to nejak pujde obejit. Jestli to nijak nepujde, tak si napisu trigger, ktery to bude pridavat do dalsiho sloupce a pomoci like uz to pujde. |
||
Kajman_ Profil * |
#7 · Zasláno: 12. 12. 2005, 10:30:29
Mělo by to jít takhle nějak... from articles a, tags t, tags_articles ta, tags t2, tags_articles t2 where a.id = ta.article_id and ta.tag_id = t.id and a.id = ta2.article_id and ta2.tag_id = t2.id and t2.tag = "foo" group by id
Já myslel, že budeš vytahovat i nějaké ty odkazy a ne jen název. Zda se mi to, nebo mi pokazde pomuzes ty? Zdá :-) |
||
halogan Profil |
#8 · Zasláno: 12. 12. 2005, 17:45:08
Kajman_: Bezvadny, funguje jak ma. Uz jsi jak krtecek - vsechno vi, vsechno zna :) Nebo to byl princ Krasoň? Teď nevím.
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0