Autor Zpráva
Australan z Čech
Profil *
Ahojte,


vypisuji z db

$vypsat=mysql_query("SELECT* FROM tabulka1 WHERE kategorie = '$kategorie' ...............


a potřeboval bych poradit jak použít WHERE pro více kategorií najednou zkoušel jsem to takhle:

$vypsat=mysql_query("SELECT* FROM tabulka1 WHERE kategorie, kategorie2, kategorie3 = '$kategorie' ...............

ale takhle to nejde. Jde nějakým způsobem přidat počet porovnávaných sloupců v příkazu WHERE.?

předem díky
Kajman_
Profil *
kategorie = '$kategorie' and kategorie2 = '$kategorie'
kategorie = '$kategorie' or kategorie2 = '$kategorie'

A nejlepší je dát vazbu na kategorie do jiné tabulky, aby jich mohl být libovolný počet. Pojmenování 123 zavání totiž špatným návrhem, který přinese spíše komplikace.
Joker
Profil
Australan z Čech
Při podmínce na více sloupců se používají logické výrazy, typicky AND a OR. AND je podmínka "a (současně)", tedy musí platit výrazy na obou stranách, OR je podmínka "anebo", tedy musí platit alespoň jeden z výrazů.
Teď si vyberte podle toho, co chcete.
SELECT * FROM tabulka WHERE prvni=1 AND druhy=2
-> vypíše řádky, kde sloupec prvni má hodnotu 1 a současně sloupec druhy má hodnotu 2

SELECT * FROM tabulka WHERE prvni=1 OR druhy=2
-> vypíše řádky, kde sloupec prvni má hodnotu 1 anebo sloupec druhy má hodnotu 2

Nicméně pokud máte v tabulce sloupce s indexovanými jmény- "kategorie, kategorie2, kategorie3,...", je nejspíš špatně návrh databáze.

edit: Njn, kajman_ zvládl říct totéž rychleji a stručnějí.
Australan z Čech
Profil *
Díky, nevědel jsem, že můžu u sql příkazu používat normální php podmínky and a or. Už bych to měl zvládnout
Joker
Profil
Australan z Čech
nevědel jsem, že můžu u sql příkazu používat normální php podmínky and a or
To nejsou PHP podmínky, ale MySQL operátory. Operátory v MySQL viz zde: http://dev.mysql.com/doc/refman/5.0/en/non-typed-operators.html

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: