Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   два запроса одновременно (https://javascript.ru/forum/server/26017-dva-zaprosa-odnovremenno.html)

posta 22.02.2012 19:23

два запроса одновременно
 
Существует ли способ записать два запроса из одной таблицы, как один запрос.

Т.е., например, нужно узнать сколько в таблице значений с одним критерием, и, второй запрос, сколько в таблице значений с другим значением.

$sql1="SELECT COUNT(*) FROM `table`
		WHERE `start`='2';

$sql2="SELECT COUNT(*) FROM `table`
		WHERE `start`='3';

DreamTheater 22.02.2012 19:26

SELECT COUNT(*) FROM `table` WHERE `start` = '2' OR `start` = '3'

Не?

posta 22.02.2012 19:28

надо что бы выводило 2 значения для этих критерием. В общем делало тоже самое, что и эти два запроса по отдельности: получаем количество строк для разных критериев.

Например в таблице в столбце `start` - 10 записей. Две из них имеют значение 2. Пять из них имеют значение 3. Так вот, надо чтобы выдавался массив = (2,5)

T-sh 22.02.2012 21:58

Цитата:

Сообщение от posta (Сообщение 159219)
надо что бы выводило 2 значения для этих критерием. В общем делало тоже самое, что и эти два запроса по отдельности: получаем количество строк для разных критериев.

Например в таблице в столбце `start` - 10 записей. Две из них имеют значение 2. Пять из них имеют значение 3. Так вот, надо чтобы выдавался массив = (2,5)

получаешь один массив со значениями 2 и 3 и разбиваешь/соритруешь/чистишь его так, как нужно :) два запроса — неоправданная нагрузка.

posta 23.02.2012 02:55

Ну так я так и хочу. Как будет выглядеть такой запрос??!

NoResponse 23.02.2012 07:24

что то вроде такого ?

в одну строку...
$sql="
SELECT * FROM (
	SELECT COUNT(*) AS c1 FROM `table` WHERE `start`='2'
) AS t1, (
	SELECT COUNT(*) AS c2 FROM `table` WHERE `start`='3'
) AS t2
";


или в две строки...
$sql="
	SELECT COUNT(*) FROM `table` WHERE `start`='2'
	UNION
	SELECT COUNT(*) FROM `table` WHERE `start`='3'
";

posta 23.02.2012 16:35

NoResponse,
ДА, спасибо, но помог только первый вариант, второй, выдает только по 1 селекту.

sergasd 23.02.2012 17:16

SELECT `start` , COUNT(*) `cnt`
FROM `table`
WHERE `start` IN ('2', '3')
GROUP BY `start`


Часовой пояс GMT +3, время: 07:07.