slozity dotaz

11 příspěvků

Archiv diskusního fóra

Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.

  1. zdravim vsechny, mam dve tabulky: menu_polozky ( id_polozky - primary_key nazev_polozky kod_polozky poradi_polozky ) type=InnoDB a menu_podpolozky ( id_podpolozky - primary_key id_polozky nazev_podpolozky kod_podpolozky ) type=InnoDB data v tabulkach jsou priblizne takova: menu_polozky id_polozky nazev_polozky 1 Aktuality 2 Diskuse 3 Rozvrhy 4 Fotogalerie 5 Liga 6 Vysledky menu_podpolozky id_podpolozky id_polozky nazev_podpolozky 1 1 Nové 2 1 Starší 3 1 Přidat 4 1 Odebrat 5 2 Přidat 6 2 Hledat 7 3 Všechny 8 3 Hledat 9 4 Z akci 10 4 Vyprazdnit potreboval bych dotaz po kterym bych mel tento vypis: Aktuality Nové Starší Přidat Odebrat Diskuse Přidat Hledat Rozvrhy Všechny Hledat Fotogalerie Z akci Vyprazdnit Liga Vysledky
  2. doufam ze to je pochopitelny a predem moc dekuji za pripadne jakekoli odpovedi..
  3. <HTML>Pokud jde o jen o výpis, asi bych použil dva dotazy (jeden vybere ty hlavní sekce, druhý podsekce). Pokud jsou oba výsledky správně seřazeny, vhodným cyklem s vnořeným cyklem lze dosáhnout kýženého výsledku. Pokud chcete oželet mezery a ten výstup použít někde v MySQL dál, použil bych něco takového: <code>SELECT nazev FROM ( SELECT nazev_polozky AS nazev, (id_polozky * 50) AS vaha FROM menu_polozky UNION SELECT nazev_podpolozky AS nazev, (id_polozky * 50 + id_podpolozky) AS vaha FROM menu_podpolozky ) ORDER BY vaha</code></HTML>
  4. <HTML>Otázka je, zda zdejší MySQL umí vnořené SELECTy. Už jsem s ním dlouho nepracoval.</HTML>
  5. uz sem na to prisel ale presto dekuji kdyby to nekoho zajimalo tak takhle sem to proved.. <table width="50%" border="1" align="center"> <tr><th>Nazev</th><th>Poradi</th></tr> <?php include ("spojeni.php"); $sql = "select * from menu_polozky"; $vysledek = mysql_query($sql); $zaznam = mysql_num_rows($vysledek); for ($i = 1; $i <= $zaznam; $i++) { $sqla = "select * from menu_polozky where poradi_polozky = '$i'"; $vysledeka = mysql_query($sqla); $zaznama = mysql_fetch_array($vysledeka); echo "<tr><td>".$zaznama["nazev_polozky"]."</td><td> </td></tr>"; $id_polozky = $zaznama["id_polozky"]; $sqlb = "select * from menu_podpolozky where id_polozky = '$id_polozky'"; $vysledekb = mysql_query($sqlb); while ($zaznamb = mysql_fetch_array($vysledekb)) { echo "<tr><td>".$zaznamb["nazev_podpolozky"]."</td></tr>"; } } ?> </table>
  6. $sql = "select * from menu_polozky"; $vysledek = mysql_query($sql); ziskas vsechno $sqla = "select * from menu_polozky where poradi_polozky = '$i'"; k tomu ziskas jen nektere vybrane ze stejne tabulky Nestacil by 1 dotaz? :) A jak mas podpolozky, mozna by stacilo do SQL tabulky pridat sloupec hloubka, zanoreni, prvni oznacit jako 1, druhe jako 2. Predpokladam, ze v te tabulce nebude ani 1000 zaznamu, takze se select provede celkem rychle.
  7. a jeste bych to teda udelal tak, ze: SELECT FROM menu WHERE hloubka=1 -> polozky1 -> seznamID "SELECT FROM menu WHERE hloubka=2 AND idpolozky IN (".implode(',',seznamID).")" Az to mas vse, pak cyklem ulozit do promemne a cele vypsat jako jednu promennou. Mam zkusenosti, ze vypsani tabulky ala phpmyadmin radek po radku trva dele nez to ulozit do promenne treba po 50 radcich a vypisovat.
  8. <HTML>papirek: Ne, to je špatné řešení a já jej neschvaluji. Vyvarujte se tolika dotazů. Stačí dva SELECTY (ani o ň víc) a potom jeden šikovný cyklus s vnořeným cyklem. Nic víc. Zkuste na to přijít.</HTML>
  9. Dobrý je, že nadepsal téma jako: "slozity dotaz" a pak o příspěvek dále píše: "doufam ze to je pochopitelny..." Asi mi moc věřil... :-)))
  10. ..co takhle neškrábat se pravou rukou za levým uchem a použít prosté join?
  11. tedy konkrétně select * -- tady si dejte, co potrebujete from menu_polozky p join menu_podpolozky pp on p.id_polozky = pp.id_polozky order by id_polozky, id_podpolozky

← Zpět na všechna témata