Autor | Zpráva | ||
---|---|---|---|
tre-SKA Profil * |
#1 · Zasláno: 18. 7. 2011, 10:05:45
SELECT
predmety.nazov, predmety.obrazok, odkazy.link, odkazy.nazov_linku FROM predmety GROUP BY predmety.nazov LEFT JOIN odkazy ON predmety.id = odkazy.id_predmetu |
||
tre-SKA Profil * |
#2 · Zasláno: 18. 7. 2011, 10:12:26
ospravedlnujem sa za predchadzajuci prispevok. mam 2 tabulky, tabulku s predmetmi (v skole) a tabulku s odkazmi k predmetom prepojenu cez id_predmetu. pri SELECTe to ale vypise vzdu nazov predmetu + odkaz a znova nazov toho isteho predmetu + odkaz, podla toho kolko odkazov je priradenich k danemu predmetu. a chcem sa spytat ako by to slo urobit aby pri vypise v PHP vypisalo len predmet + vsetky odkazi k nemu prisluchajuce, a dalsi predmet + k nemu odkazi, skusal som to vseliako s DISTRICT alebo GROUP BY ale neuspesne
SELECT predmety.nazov, odkazy.link FROM predmety LEFT JOIN odkazy ON predmety.id = odkazy.id_predmetu WHERE predmety.id = 1 and predmety.rocnik = 1 dakujem moc za odpovede :) |
||
Jan Knížek Profil |
#3 · Zasláno: 18. 7. 2011, 10:13:14
Bylo by dobré napsat co vlastně chceš.
|
||
o_O Profil |
#4 · Zasláno: 18. 7. 2011, 10:19:55
Ou, v poslední době je na toto téma dosti otázek. Existuje na to MySQL funkce group_concat, nádherně ji vysvětluje Jakub Vrána.
V poslední době řešeno v: Dotaz nevypíše vše co má > array a dvě kategorie v jednom řádku tabulky. |
||
Jan Knížek Profil |
#5 · Zasláno: 18. 7. 2011, 10:53:55
$dotaz = mysql_query("SELECT predmety.nazov, odkazy.link, GROUP_CONCAT(odkazy.link) AS jmeno FROM predmety LEFT JOIN odkazy ON predmety.id = odkazy.id_predmetu GROUP BY predmety.id ORDER BY COUNT(odkazy.link)"); while(($data = mysql_fetch_array($dotaz)) != null){ echo($data["nazov"] . " " . $data["jmeno"] . "<br>"); } Nějak jsem to napsal, snad to bude fungovat. Odkazy je možné jednoduše pomocí metody Explode rozdělit a přidat tam například HTML tag pro odkaz. |
||
o_O Profil |
#6 · Zasláno: 18. 7. 2011, 10:56:06
Jan Knížek:
„Odkazy je možné jednoduše pomocí metody Explode rozdělit“ Nebo využít druhého parametru funkce group_concat a rovnou vypisovat odkazy. |
||
tre-SKA Profil * |
#7 · Zasláno: 18. 7. 2011, 11:42:02
dakujem velmi pekne zda sa ze to funguje, ale vyskytol sa dalsi problem, neviem ako mam generovat tie odkazy (linky)
tu je cely moj select a cast kodu na generovanie linkov: SELECT predmety.nazov, predmety.obrazok, predmety.id, odkazy.link, odkazy.nazov_linku, GROUP_CONCAT(odkazy.link) AS link1, GROUP_CONCAT(odkazy.nazov_linku) AS nazov_linku1 FROM predmety LEFT JOIN odkazy ON predmety.id = odkazy.id_predmetu GROUP BY predmety.id ORDER BY (predmety.id) <a href=\"predmety$data[link1]\">$data[nazov_linku1]</a> <br /> |
||
o_O Profil |
#8 · Zasláno: 18. 7. 2011, 11:52:07
|
||
tre-SKA Profil * |
#9 · Zasláno: 18. 7. 2011, 12:02:15
to mi je jasne aj to zda sa ze funguje, a velmi pekne dakujem dost ste mi pomohli.
ale ide mi o tuto cast kodu (zjednodusene) echo " <a href=\"predmety$data[link1]\">$data[nazov_linku1]</a> <br /> "; teraz to generuje vsetko spolu, a neviem ako to mam rozdelit aby to generovalo spravne <a href=\"predmety\1CESTA">1NAZOV LINKU</a> <br /> <a href=\"predmety\2CESTA">2NAZOV LINKU</a> <br /> atd... |
||
o_O Profil |
#10 · Zasláno: 18. 7. 2011, 12:05:38
tre-SKA:
„teraz to generuje vsetko spolu, a neviem ako to mam rozdelit aby to generovalo spravne“ Kolikrát Vám mám psát, že můžete odkazy zpracovávat na úrovni PHP (funkce explode(), viz [#5]), nebo již na úrovni MySQL (další parametr funkce group_concat(), viz [#6])? Doufám, že tato či jí podobná otázka tady už nepadne, začal bych vážně litovat. |
||
Jan Knížek Profil |
#11 · Zasláno: 18. 7. 2011, 12:05:55
o_O:
„Nebo využít druhého parametru funkce group_concat a rovnou vypisovat odkazy.“ To je také možnost, ale Jakub Vrána tuto možnost nedoporučuje;) |
||
tre-SKA Profil * |
#12 · Zasláno: 18. 7. 2011, 16:27:11
obraciam sa na vas este s prosbou, od obeda sa s tym babrem a neviem dojst na ziadne elegantne riesenie. vyuzil som funkciu explode()
$link = Explode (",", $data[link1]); $nazov_linku = Explode (",", $data[nazov_linku1]); <a href=\"predmety$link[0]\">$nazov_linku[0]</a> <br /> 0 v poliach je len pre ilustraciu a neviem co mam dat do pola $link[] a $nazov_linku[] aby to elegantne vygenerovalo vsetky linky ktore su v DB cize nejake pocitadlo od 0 po pocet riadkov v DB v danom predmet, skusal som zistit pocet zasnamov a pomocou tohto vysledku nejako vygenerovat cisla pre polia ale neuspesne, ak do pola zadam napevno hodnotu tak vsetko vypise tak ako ma. este prikladam Select pre DB SELECT predmety.nazov, predmety.obrazok, predmety.id, odkazy.link, odkazy.id_predmetu, odkazy.nazov_linku, GROUP_CONCAT(odkazy.link) AS link1, GROUP_CONCAT(odkazy.nazov_linku) AS nazov_linku1 FROM predmety LEFT JOIN odkazy ON predmety.id = odkazy.id_predmetu GROUP BY predmety.id ORDER BY (predmety.id) |
||
Jan Knížek Profil |
#13 · Zasláno: 18. 7. 2011, 20:07:36 · Upravil/a: Jan Knížek
přece sem nebudeme psát celý kód! Prostě pomocí cyklu while vypisujte všechny řádky fce mysql_fetch_array. V každém průchodu cyklem vložíte do pole $link metodou explode proměnnou $vasepromena["jmeno"] a poté ji foreachem vypíšete. Co je na tom nepochopitelného?
p.s. je zbytečné sem znovu vkládat stejný kód. |
||
tre-SKA Profil * |
#14 · Zasláno: 19. 7. 2011, 09:27:36
este jedna otazka ako pridam do toho selectu podmienku where.
skusal som pridat ale tak nevypise z DB nic. WHERE predmety.rocnik = 1 skusal som vytiahnut z DB jednoducho len predmety a to fungovalo |
||
o_O Profil |
#15 · Zasláno: 19. 7. 2011, 10:07:40 · Upravil/a: o_O
Syntaxe je PŘÍKAZ (v tomto případě select), CO, ODKUD (to jsou ty vaše leftjoiny), PODMÍNKA, GROUP, ORDER.
|
||
Časová prodleva: 13 let
|
0