/ / php mysql zlúčiť niekoľko rovnakých dopytov do jedného - php, mysql

php mysql zlúčiť niekoľko rovnakých dopytov do jedného - php, mysql

Takže mám nejaký rozsah od 1 do 40,

ktoré musím použiť na vykonanie rôznych dopytov z tej istej tabuľky a stĺpca, ale z iného rozsahu ako:

mysql_query("SELECT * FROM table WHERE column > 1 && column <= 15");
mysql_query("SELECT * FROM table WHERE column >=18 && column <= 30");
mysql_query("SELECT * FROM table WHERE column >= 35 && column <= 38");

dostávam celú riadku z týchto dopytov jeden po druhom pre rôzne akcie ... ale ako môžem kombinovať tieto 3 napríklad otázky do 1 a získať rovnaký výsledok?

odpovede:

5 pre odpoveď č. 1
SELECT * FROM table
WHERE (column > 1 AND column <= 15)
OR (column >= 18 AND column <= 30)
OR (column >= 35 AND column <= 38)

// EDIT: OP chce spočítať počet riadkov pre každú podmienku:

SELECT
(SELECT COUNT(*) FROM table WHERE column > 1 AND column <= 15) AS count_1,
(SELECT COUNT(*) FROM table WHERE column >= 18 AND column <= 30) AS count_2,
(SELECT COUNT(*) FROM table WHERE column >= 35 AND column <= 38) AS count_3
FROM table

count_1, count_2 a count_3 sú čísla riadkov pre každú podmienku.


2 pre odpoveď č. 2

Veľmi upravené, pretože som nesprávne prečítal túto otázku

Ak chcete všetky riadky, ktoré by ste mohli jednoducho urobiť:

SELECT * FROM table WHERE (column > 1 AND column <= 15) OR
(column >=18 AND column <= 30) OR
(column >= 35 AND column <= 38)

Ak však chcete počítať len pre každého, nie je to správna cesta. Počítanie môže byť vypočítané priamo v MySQL pomocou count(*), Aj keby ste robili tri samostatné otázky, bolo by lepšie použiť count(*) nad výberom všetkých riadkov (používala oveľa menej pamäte).

S tým povedal, môžete získať počet pre všetky riadky, ako je toto:

$query = "SELECT ".
" (SELECT COUNT(*) FROM table WHERE column > 1 AND column <= 15) AS count_1,".
" (SELECT COUNT(*) FROM table WHERE column >= 18 AND column <= 30) AS count_2,".
" (SELECT COUNT(*) FROM table WHERE column >= 35 AND column <= 38) AS count_3";

$res = mysql_query($query);
extract( mysql_fetch_assoc($res) );

echo "The counts are $count_1, $count_2, and $count_3";

Na extract funkcia bude mať asociatívne pole a nastavenie lokálnej premennej pre každú položku v tomto poli.Len myslel, že by bolo jednoduchšie na použitie ako zaoberajú pole vráti z mysql_fetch_assoc.

Poznámka: @fn-n zverejnil prvý SQL, som len formátované do PHP.I "d pisat inak okrem (y)? to už urobil právo cestu :)


0 pre odpoveď č. 3

$query =    "SELECT * FROM table ".
"WHERE (column > 1 && column <= 15) ".
"OR (column >=18 && column <= 30) ".
"OR (column >= 35 && column <= 38)";
mysql_query($query);