powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из одной таблицы в два запроса
8 сообщений из 8, страница 1 из 1
Выборка из одной таблицы в два запроса
    #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
Выборка из одной таблицы в два запроса
    #39766520
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21Petro21как я только не крутилА как?


21Petro21максимум что получаетсяЕсли уж совсем тупо, то пропустить этот набор строк через группировку по name, а столбцы через агрегирующую функцию MAX().
...
Рейтинг: 0 / 0
Выборка из одной таблицы в два запроса
    #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
Выборка из одной таблицы в два запроса
    #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
Выборка из одной таблицы в два запроса
    #39766607
Фотография 21Petro21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, спасибо огромное!
Но остался вопрос, почему с "count(text LIKE 'As%')" не работает. вернее работает, но выводит одинаковые данные в оба столбца?
BINARY использовал для получения 1 и 0 (есть или нет).
Сумма мне тоже пойдет, применю if (x > 0, '1', '0')
...
Рейтинг: 0 / 0
Выборка из одной таблицы в два запроса
    #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
Выборка из одной таблицы в два запроса
    #39766615
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, именовать выводимые поля одинаково (в регистронезависимом контексте) `As` и `AS` не самое лучшее решение.
...
Рейтинг: 0 / 0
Выборка из одной таблицы в два запроса
    #39766623
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
21Petro21почему с "count(text LIKE 'As%')" не работает. вернее работает, но выводит одинаковые данные в оба столбца?Читать Operator LIKE до полного вразумления. Особое внимание - слову COLLATE .
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из одной таблицы в два запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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