Autor Zpráva
tre-SKA
Profil *
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 *
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
Bylo by dobré napsat co vlastně chceš.
o_O
Profil
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
$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
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 *
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
tre-SKA:
neviem ako mam generovat tie odkazy
Byly vám poskytnuty 2 možnosti. Buď můžete odkazy zpracovávat na úrovni PHP (funkce explode(), viz [#5]), nebo již na úrovni MySQL (další parametr funkce group_concat(), viz [#6]).
tre-SKA
Profil *
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
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
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 *
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
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 *
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
Syntaxe je PŘÍKAZ (v tomto případě select), CO, ODKUD (to jsou ty vaše leftjoiny), PODMÍNKA, GROUP, ORDER.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0