Autor Zpráva
milan.lipka
Profil *
Zdravím,
mám tabuľku:
CREATE TABLE `kategorie` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `nazov` VARCHAR(100) NOT NULL DEFAULT '',
  `sub` INT(11) NOT NULL DEFAULT 0,
  PRIMARY KEY(`id`)
);


a chcel by som z nej vybrať zoznam hlavných kategórii (vtedy keď hodnota v sub je 0) a 5 subkategórii pre každú kategóriu (hodnota sub je id supkategórie). Doteraz som to robil pomocou jedného selectu + pri každej kategórii ďalší select ktorý vybral subkategórie. Ale toto asi nie je najlepšie riešenie a preto hľadám ako to dať do jedného mysql_query.

Doterajší spôsob:
  $res = mysql_query("SELECT * FROM kategorie WHERE sub = 0");
  while ($row = mysql_fetch_array($res)) {
    echo ...;
    $res_ = mysql_query("SELECT * FROM kategorie WHERE sub = '".$row['id']."' LIMIT 5");
    while ($row_ = mysql_fetch_array($res_)) {
      echo ...;
    }
  }



Vedel by mi niekto poradiť lepšie riešenie?

Vďaka
somebody
Profil
To logicky nejde, udělat dva selecty na výpis v jednom while musí to jít takto jak to mu máte.
Tzn jedním while kategorie a v něm zanořený druhý while pro subkategorie.
Kajman_
Profil *
Můžete zkusit něco jako

select k1.nazov hlavni, k2.nazov pohlavni from kategorie k1 left join kategorie k2 on k1.id=k2.sub where k1.sub=0 order by k1.nazov,k2.nazov


A upravíte si while tak, že hlavní kategorii vypíšete jen když bude jiná než minulá hlavní. A klidně můžete i ignorovat víc podkategorií než 5.

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: