Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается 2 запроса в 1 / 14 сообщений из 14, страница 1 из 1
30.06.2014, 12:59:12
    #38683637
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Привет!
Хочу за 1 запрос сделать эти два:
Код: sql
1.
SELECT * FROM projects;


Код: sql
1.
SELECT count(*) FROM projects;


Пробывал так:
Код: sql
1.
SELECT *, count(*) FROM projects;


Код: sql
1.
SELECT * FROM projects UNION SELECT count(*) FROM projects;


Второй вообще ошибку выдает.
...
Рейтинг: 0 / 0
30.06.2014, 13:01:16
    #38683640
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Паша01Привет!
Хочу за 1 запрос сделать эти два:
Код: sql
1.
SELECT * FROM projects;


Код: sql
1.
SELECT count(*) FROM projects;


Пробывал так:
Код: sql
1.
SELECT *, count(*) FROM projects;


Код: sql
1.
SELECT * FROM projects UNION SELECT count(*) FROM projects;


Второй вообще ошибку выдает.
Что ж вы хотите?
Скорее всего количество полей и их типы разные.
Кто же вам их заюнит?
...
Рейтинг: 0 / 0
30.06.2014, 13:02:57
    #38683641
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Так написать не пробовали:
Код: sql
1.
SELECT *, (SELECT COUNT(1) FROM projects) as CNT FROM projects;
...
Рейтинг: 0 / 0
30.06.2014, 13:04:28
    #38683642
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
SQL2008Так написать не пробовали:
Код: sql
1.
SELECT *, (SELECT COUNT(1) FROM projects) as CNT FROM projects;


Чувак, работает! Спасибо огромное!
...
Рейтинг: 0 / 0
30.06.2014, 13:05:41
    #38683644
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Паша01,

Вы хотите странного и, скорее всего, ненужного.
Но можно так:
Код: sql
1.
2.
SELECT t1.*, t2.cnt
FROM projects t1, (SELECT COUNT(*) cnt FROM projects) t2


Но если таблица будет пуста, то в результате будет пустой набор записей, а не запись с нулем.
...
Рейтинг: 0 / 0
30.06.2014, 13:07:10
    #38683647
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
SQL2008Так написать не пробовали:
Код: sql
1.
SELECT *, (SELECT COUNT(1) FROM projects) as CNT FROM projects;

Так тоже можно, но желательно убедиться, что MySQL поймет этот подзапрос как независимый. Иначе подзапрос будет выполнен столько же раз, сколько записей в таблице projects.
...
Рейтинг: 0 / 0
30.06.2014, 13:09:03
    #38683650
Паша01
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
miksoftSQL2008Так написать не пробовали:
Код: sql
1.
SELECT *, (SELECT COUNT(1) FROM projects) as CNT FROM projects;

Так тоже можно, но желательно убедиться, что MySQL поймет этот подзапрос как независимый. Иначе подзапрос будет выполнен столько же раз, сколько записей в таблице projects.
Ага, спасибо за замечание, буду вкуривать!
...
Рейтинг: 0 / 0
30.06.2014, 13:18:22
    #38683658
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Паша01Ага, спасибо за замечание, буду вкуривать!Да что тут вкуривать...
Выполните каждый вариант несколько раз с добавкой SQL_NO_CACHE и посмотрите на время.
...
Рейтинг: 0 / 0
30.06.2014, 13:31:27
    #38683670
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Если есть возможность, то напишите так
Код: sql
1.
2.
SELECT COUNT(1) INTO @CNT FROM projects;
SELECT *, @CNT as CNT FROM projects;


Чтобы не подсчитывать в каждой строке количество.
...
Рейтинг: 0 / 0
30.06.2014, 13:39:00
    #38683682
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
SQL2008Если есть возможность, то напишите так
Код: sql
1.
2.
SELECT COUNT(1) INTO @CNT FROM projects;
SELECT *, @CNT as CNT FROM projects;



Чтобы не подсчитывать в каждой строке количество.А смысл? Тогда уж забирать результат первого запроса на клиента. Все равно два обращения к серверу, т.е. экономии никакой.
...
Рейтинг: 0 / 0
30.06.2014, 13:51:41
    #38683692
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
Но если в таблице projects миллион записей, то количество будет подсчитываться для каждой строки.
Или в MySQL это не так?
...
Рейтинг: 0 / 0
30.06.2014, 13:52:25
    #38683693
SQL2008
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
А есть в MySQL что-то типа @@ROW_COUNT?
...
Рейтинг: 0 / 0
30.06.2014, 13:53:53
    #38683694
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
SQL2008Но если в таблице projects миллион записей, то количество будет подсчитываться для каждой строки.
Или в MySQL это не так?я же писал выше ( 16238136 ), что нужно проверять.
...
Рейтинг: 0 / 0
30.06.2014, 13:55:44
    #38683699
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается 2 запроса в 1
SQL2008А есть в MySQL что-то типа @@ROW_COUNT?есть, SQL_CALC_FOUND_ROWS + FOUND_ROWS()
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается 2 запроса в 1 / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]