| Autor | Zpráva | ||
|---|---|---|---|
| radekzatec Profil |
#1 · Zasláno: 11. 1. 2010, 14:29:18 · Upravil/a: radekzatec
Dobrý den,
řeším menší problém a nevím jak na něj. Nikdy jsem neřešil dotazy v rámci relace. Mám 4 tabulky InnoDB autori - IDautora, autor, funkce kategorie - IDkat, nazevKat zdroje - IDzdroj, nazevZdroj clanky - IDclanek, nadpis, clanek, date, IDautora, IDzdroj, IDkat relace FOREIGN KEY clanky.IDkat = kategorie.IDkat FOREIGN KEY clanky.IDautora = autori.IDautora FOREIGN KEY clanky.IDzdroj = zdroje.IDzdroj řeším dotazy potřebuji vytvořit submenu na stránkách, které bude tvořeno položkama ze sloupce kategorie.nazevKat, to není problém - lehký select. Já potřebuji, ale udělat, aby se načetly jen kategorie které už mají výskyt v tabulce clanky.IDkat. to jsem udělal takto:
$mysqldb->query("SELECT
nazevKat
FROM
kategorie,
clanky
WHERE
clanky.IDkat = kategorie.IDkat");
V tabulce clanky jsou jen tři položky dvě mají nastavené IDkat stejně "Legislativa" a třetí je rozdílný "Soutěže". Takže by mi mělo menu vypsat celkem dvě položky z tabulky kategorie i když tam je položek 9 a to Legislativa a Soutěže. (Potřebuji aby se mi automatizovalo menu, jakmile přibude članek v nové kategorii tak se objeví v menu do té doby ne).
<?php
/* Příprava SQL dotazu */
$mysqldb->query("SELECT nazevKat
FROM kategorie, clanky
WHERE clanky.IDkat = kategorie.IDkat");
/* Zobrazení výsledku v HTML */
while ( $row = $mysqldb->fetchObject()) {
?>
<li><a href="" title=""><?php echo $row->nazevKat; ?></a></li>
<?php
}
/* Uvolnit výsledek */
mysql_free_result($result);
?>
Ale realita je taková že se mi načtou položky tři v menu se zobrazi Legislativa Legislativa Souteže toto bych potřeboval udělat tak aby se vždy zobrazila jen jedna z položek. Možná by se hodilo i malé vysvětlení co úprava konkrétně udělala a asi i proč. Myslím že se dostanu do konfliktu až budu tvořit dotazy na výběr članku z kategorie A od autora A (ovšem, že v kategorii budou članky jak z různých kategorií, tak to samé od různých autoru). Předem děkuji za radu a vysvětlení kde je chyba. |
||
| Kajman_ Profil * |
#2 · Zasláno: 11. 1. 2010, 14:42:40
např. lze definovat, že select má ignorovat totožné řádky
select distinct nazevKat from... |
||
| radekzatec Profil |
#3 · Zasláno: 11. 1. 2010, 14:52:27
Kajman:
Skvělé tohle funguje. Ale nebráním se i jiným řešením. |
||
|
Časová prodleva: 16 let
|
|||
0