Autor Zpráva
quatzael
Profil
Jak udělat SQL request, který by měl např. deset podmínek za WHERE a byly splněny všechny kromě jedné, dvou, tří apod. z celkového počtu podmínek?

SELECT * FROM tabulka WHERE podminka1 AND podminka2 AND podminka3 ...

Vím, že by to šlo udělat permutací, ale ten dotaz by potom byl šíleně dlouhej. Je na to nějaký snadnější způsob?
Kajman
Profil
V select části lze spočítat počet splněných
select tabulka.*, podminka1 + podminka2 + podminka3 splneno
from tabulka
having splneno=2

A pak to podle splneno můžete filtrovat nebo řadit. Velkou rychlost od toho nečekejte.


Edit: druhá varianta
SELECT sloupce_primarniho_klice,
       Count(*) splneno
FROM   (SELECT sloupce_primarniho_klice
        FROM   tabulka
        WHERE  podminka1
        UNION ALL
        SELECT sloupce_primarniho_klice
        FROM   tabulka
        WHERE  podminka2
        UNION ALL
        SELECT sloupce_primarniho_klice
        FROM   tabulka
        WHERE  podminka3) t
GROUP  BY sloupce_primarniho_klice
HAVING splneno = 2 
quatzael
Profil
Kajman:
Dík moc!

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:

0