Autor | Zpráva | ||
---|---|---|---|
Ochechula58 Profil * |
#1 · Zasláno: 8. 2. 2016, 16:16:33
Ahojte, mam databazu kategorie a nasledne databazu clanky.
Potreboval by som poradit ako spravit aby sa mi vypisali iba clanky z podkategorii ktore urcim. Mam napriklad hlavnu kategoriu NOVINKY a pod nou 3 podkategorie ktore maju RODICOVSKE_ID 12 ID........RODICOVSKE_ID........NAZOV 5..........0..............................Novinky 45.......12..............................Vesmir 12.......12..............................Priroda 1.........12..............................Botanika Skusam to takto ale to nefunguje: $result = mysql_query('SELECT id FROM kategorie WHERE rodicovske_id="12" '); $idkategorie = mysql_fetch_array($result )); $result2 = mysql_query('SELECT * FROM clanky WHERE '.$idkategorie.' '); Alebo som to skusal aj takto ale to je urcite uplna hlupost $result = mysql_query('SELECT * FROM kategorie WHERE rodicovske_id="12" '); $result2 = mysql_query('SELECT * FROM clanky WHERE '.while($idkategorie = mysql_fetch_array($result )) { echo 'id_kategorie="'.$idkategorie [id].'" OR '; } .' '); Problem je v tom ze mi to do WHERE rodicovske_ID doplna NULL vysledok. |
||
Keeehi Profil |
#2 · Zasláno: 8. 2. 2016, 16:54:30
Ochechula58:
Tak nejdříve by to chtělo opravit ukázku databáze. Takhle ty IDčka nedávají smysl. |
||
Ochechula58 Profil * |
#3 · Zasláno: 9. 2. 2016, 08:56:22
Dakujem za odpoved ale nechapem ako to myslis ze treba opravit ukazku.
Vysledok z jednej poziadavky na DB bude napriklad 45,12,1 a potrebujem aby sa v druhej poziadavke na DB pouzilo WHERE na porovnanie udajov podla vysledkov z prvej poziadavky. cize by to malo vyzerat takto: mysql_query('SELECT * FROM kategorie WHERE id_category="45" AND id_category="12" AND id_category="1" '); |
||
anonymníí Profil * |
#4 · Zasláno: 9. 2. 2016, 08:59:35
Ochechula58:
1. nepoužívej mysql_*
2. mysql_fetch_array vrací něco jiného, než chceš, konzultuj s Manuálem
3. ve 2. SQL dotazu ti ve WHERE chybí název sloupce
4. požadovaný SQL dotaz ve #3 ve WHERE nebude mít AND , ale OR . Lépe použít IN .
|
||
Kajman Profil |
#5 · Zasláno: 9. 2. 2016, 10:15:16
Ochechula58:
MySQL nepodporuje nativně hiearchické dotazy. Pokud máte možnost, zvažte použití např. PostgreSQL. Pak vypsání článků v kategorii půjde jednodušeji jedním dotazem. V MySQL se na takové dotazy často používají předpočítané pomocné sloupce a tzv. traverzování kolem stromu. |
||
Keeehi Profil |
#6 · Zasláno: 9. 2. 2016, 11:07:34
Ochechula58:
„Dakujem za odpoved ale nechapem ako to myslis ze treba opravit ukazku.“ Problém je, že příroda má jako rodiče uvedeného samu sebe. Pokud je to hlavní kategorie, tak neměl by být rodič 0? Pokud je to podkategorie novinek, pak by měl být rodič 5. Pokud je to podkategorie něčeho, co nemáte uvedené a má to ID 12, pak by měla mít příroda jiné ID. No a pokud hlavní kategorii označujete opravdu tak, že ID a ID rodiče jsou stejné, pak je špatně kategorie novinky, nebo tam chybí rodičovská kategorie novinek s ID 0 (což by bylo mimochodem zvláštní). |
||
Časová prodleva: 9 let
|
0