Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из одной таблицы в два запроса / 8 сообщений из 8, страница 1 из 1
29.01.2019, 13:37
    #39766514
21Petro21
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
Здравствуйте!
есть табличка test

name text
petr AS-45
petr AS-44
petr As-48
saha As-50
conya AS-54
cola AS-87
cola As-88
cola As-89

нужно вывести
name As AS
petr 1 1
saha 1 0
conya 0 1
cola 1 1

как я только не крутил, не получается
максимум что получается
name As AS
petr 0 1
petr 1 0
saha 1 0
conya 0 1
cola 0 1
cola 1 0

Заранее спасибо!
...
Рейтинг: 0 / 0
29.01.2019, 13:45
    #39766520
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
21Petro21как я только не крутилА как?


21Petro21максимум что получаетсяЕсли уж совсем тупо, то пропустить этот набор строк через группировку по name, а столбцы через агрегирующую функцию MAX().
...
Рейтинг: 0 / 0
29.01.2019, 13:49
    #39766521
21Petro21
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
Вот как пробовал.
select M1.NameManager, M1.CompanyNameAlt, M1.cnt1 as f1, M2.cnt1 as f2
From
(select NameManager, CompanyNameAlt, count(*) as cnt1
from Manager, Firm, ListRn
where Manager.Id = Firm.ManagerId
and Firm.Id = ListRn.FirmId
and Rn LIKE 'Аро%'
and CompanyNameAlt = CompanyNameAlt
group by NameManager, CompanyNameAlt
) M1,

(select NameManager, CompanyNameAlt, count(*) as cnt1
from Manager, Firm, ListRn
where Manager.Id = Firm.ManagerId
and Firm.Id = ListRn.FirmId
and Rn LIKE 'АРО%'
and CompanyNameAlt = CompanyNameAlt
group by NameManager, CompanyNameAlt
) M2
where M1.NameManager = M2.NameManager
and M1.CompanyNameAlt = M2.CompanyNameAlt

Но в таком случае я не вижу строки типа (из примера выше)
name As AS
saha 1 0
...
Рейтинг: 0 / 0
29.01.2019, 15:15
    #39766588
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
Код: sql
1.
2.
3.
SELECT name, SUM(text LIKE 'As%') As,  SUM(text LIKE 'AS%') AS
FROM test
GROUP BY name


Однако совпадающие с точностью до регистра имена полей - это грабли... обратиться к нужному полю получится только позиционно, по имени не выйдет.
И Collation поля text обязан быть регистрочувствительным - если не так, надо явно включить регистрозависимость оператора сравнения.
...
Рейтинг: 0 / 0
29.01.2019, 15:35
    #39766607
21Petro21
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
Akina, спасибо огромное!
Но остался вопрос, почему с "count(text LIKE 'As%')" не работает. вернее работает, но выводит одинаковые данные в оба столбца?
BINARY использовал для получения 1 и 0 (есть или нет).
Сумма мне тоже пойдет, применю if (x > 0, '1', '0')
...
Рейтинг: 0 / 0
29.01.2019, 15:37
    #39766610
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
С чувствительностью к регистру можно так даже на Collation *ci*
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
	`name`,
	MAX(`text` REGEXP BINARY '^As-.*') AS `As`,
	MAX(`text` REGEXP BINARY '^AS-.*') AS `AS`
FROM `tbl` 
GROUP BY `name`
...
Рейтинг: 0 / 0
29.01.2019, 15:41
    #39766615
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
Однако, именовать выводимые поля одинаково (в регистронезависимом контексте) `As` и `AS` не самое лучшее решение.
...
Рейтинг: 0 / 0
29.01.2019, 15:51
    #39766623
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка из одной таблицы в два запроса
21Petro21почему с "count(text LIKE 'As%')" не работает. вернее работает, но выводит одинаковые данные в оба столбца?Читать Operator LIKE до полного вразумления. Особое внимание - слову COLLATE .
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из одной таблицы в два запроса / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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